首頁  >  文章  >  後端開發  >  php實作環形鍊錶的方法分享

php實作環形鍊錶的方法分享

黄舟
黄舟原創
2017-09-16 09:06:211261瀏覽

這篇文章主要介紹了PHP環形鍊錶實作方法,結合具體實例形式分析了PHP環形鍊錶的定義、創建及遍歷等操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了PHP環形鍊錶實作方法。分享給大家供大家參考,具體如下:

環形鍊錶是一種鍊式儲存結構,類似單鍊錶。區別是環形鍊錶的尾節點指向頭節點。

從而形成一個環,

環形鍊錶是一種非常靈活的存儲結構,可解決許多實際問題,魔術師發牌問題和約瑟夫問題

都能利用環形鍊錶來解決,以下是一個完整的環形鍊錶實例,使用php來實現的(參考韓順平老師的php演算法教程)


/** 
 *  环形链表的实现
 *  
 */
class child
{
  public $no;//序号
  public $next;//指向下个节点的指针
  public function __construct($no=''){
    $this ->no = $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.&#39;</br>&#39;;
    $cur = $cur->next;
  }
  //当退出循环的时候$cur->next=$first 刚好会忽略当前节点本身的遍历 所以退出的时候还要输出一下 否则会少遍历一个节点
  echo $cur->no;
}

以上是php實作環形鍊錶的方法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn