天天看點

PHP環形連結清單實作方法示例

本文執行個體講述了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-&gt;next = $first;//将連結清單的尾節點指向頭節點 形成環形連結清單

$cur = $first;//連結清單的頭節點不能動 需要交給一個臨時變量

} else {

$cur-&gt;next = $child;

$cur-&gt;next-/**【一個開發人員,能懂伺服器量好,反之一個伺服器維護人員,也應該懂開發】**/&gt;next = $first;//将連結清單的尾節點指向頭節點 形成環形連結清單

$cur = $cur->next;

}

}

}

/**

  • 周遊環形連結清單
  • @param $first object 環形連結清單的頭
  • */

function show ($first)

{

//頭節點不能動,交個一個臨時變量

$cur = $first;

while ($cur-&gt;next!=$first)//當$cur-&gt;next==$first說明到了連結清單的最後一個節點

{

echo $cur->no.'</br>';

$cur = $cur->next;

}

//當退出循環的時候$cur-&gt;next=$first 剛好會忽略目前節點本身的周遊 是以退出的時候還要輸出一下 否則會少周遊一個節點

echo $cur->no;

}

希望本文所述對大家PHP程式設計有所幫助。