本文執行個體講述了PHP環形連結清單實作方法。分享給大家供大家參考,具體如下:
環形連結清單是一種鍊式存儲結構,類似于單連結清單。差別是環形連結清單的尾節點指向頭節點。
進而形成一個環,
環形連結清單是一種非常靈活的存儲結構,可解決許多實際問題,魔術師發牌問題和約瑟夫問題
都能利用環形連結清單來解決,下面是一個完整的環形連結清單執行個體,使用php來實作的(參照韓順平老師的php算法教程)
/**
- 環形連結清單的實作
- */
class child
{
public $no;//序号
public $next;//指向下個節點的指針
public function __construct($no=''){
$this ->no =/**【php教程_linux常用指令_網絡運維技術】**/ $no;
}
}
/**
- 建立一個環形連結清單
- @param $first null 連結清單的頭節點
-
@param $num integer 需要添加節點的數量
*/
function create(&$first,$num)
{
$cur = null;
for ($i=0;$i<$num;$i++)
{
$child = new child($i+1);
if ($i==0)
{
$first = $child;
$first->next = $first;//将連結清單的尾節點指向頭節點 形成環形連結清單
$cur = $first;//連結清單的頭節點不能動 需要交給一個臨時變量
} else {
$cur->next = $child;
$cur->next-/**【一個開發人員,能懂伺服器量好,反之一個伺服器維護人員,也應該懂開發】**/>next = $first;//将連結清單的尾節點指向頭節點 形成環形連結清單
$cur = $cur->next;
}
}
}
/**
- 周遊環形連結清單
- @param $first object 環形連結清單的頭
- */
function show ($first)
{
//頭節點不能動,交個一個臨時變量
$cur = $first;
while ($cur->next!=$first)//當$cur->next==$first說明到了連結清單的最後一個節點
{
echo $cur->no.'</br>';
$cur = $cur->next;
}
//當退出循環的時候$cur->next=$first 剛好會忽略目前節點本身的周遊 是以退出的時候還要輸出一下 否則會少周遊一個節點
echo $cur->no;
}
希望本文所述對大家PHP程式設計有所幫助。