溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在PHP項(xiàng)目中實(shí)現(xiàn)一個(gè)環(huán)形鏈表

發(fā)布時(shí)間:2021-01-28 11:41:28 來源:億速云 閱讀:136 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)如何在PHP項(xiàng)目中實(shí)現(xiàn)一個(gè)環(huán)形鏈表,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

環(huán)形鏈表是一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),類似于單鏈表。區(qū)別是環(huán)形鏈表的尾節(jié)點(diǎn)指向頭節(jié)點(diǎn)。

從而形成一個(gè)環(huán),

環(huán)形鏈表是一種非常靈活的存儲(chǔ)結(jié)構(gòu),可解決許多實(shí)際問題,魔術(shù)師發(fā)牌問題和約瑟夫問題

都能利用環(huán)形鏈表來解決,下面是一個(gè)完整的環(huán)形鏈表實(shí)例,使用php來實(shí)現(xiàn)的(參照韓順平老師的php算法教程)

/** 
 *  環(huán)形鏈表的實(shí)現(xiàn)
 *  
 */
class child
{
  public $no;//序號(hào)
  public $next;//指向下個(gè)節(jié)點(diǎn)的指針
  public function __construct($no=''){
    $this ->no = $no;
  }
}
/**
 * 創(chuàng)建一個(gè)環(huán)形鏈表
 * @param $first null  鏈表的頭節(jié)點(diǎn)
 * @param $num  integer 需要添加節(jié)點(diǎn)的數(shù)量
 */
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;//將鏈表的尾節(jié)點(diǎn)指向頭節(jié)點(diǎn) 形成環(huán)形鏈表
      $cur = $first;//鏈表的頭節(jié)點(diǎn)不能動(dòng) 需要交給一個(gè)臨時(shí)變量
    } else {
      $cur->next = $child;
      $cur->next->next = $first;//將鏈表的尾節(jié)點(diǎn)指向頭節(jié)點(diǎn) 形成環(huán)形鏈表
      $cur = $cur->next;
    }
  }
}
/**
 * 遍歷環(huán)形鏈表
 * @param $first object 環(huán)形鏈表的頭
 * 
 */
function show ($first)
{
  //頭節(jié)點(diǎn)不能動(dòng),交個(gè)一個(gè)臨時(shí)變量
  $cur = $first;
  while ($cur->next!=$first)//當(dāng)$cur->next==$first說明到了鏈表的最后一個(gè)節(jié)點(diǎn)
  {
    echo $cur->no.'</br>';
    $cur = $cur->next;
  }
  //當(dāng)退出循環(huán)的時(shí)候$cur->next=$first 剛好會(huì)忽略當(dāng)前節(jié)點(diǎn)本身的遍歷 所以退出的時(shí)候還要輸出一下 否則會(huì)少遍歷一個(gè)節(jié)點(diǎn)
  echo $cur->no;
}

以上就是如何在PHP項(xiàng)目中實(shí)現(xiàn)一個(gè)環(huán)形鏈表,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI