您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何在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.'</br>'; $cur = $cur->next; } //當退出循環的時候$cur->next=$first 剛好會忽略當前節點本身的遍歷 所以退出的時候還要輸出一下 否則會少遍歷一個節點 echo $cur->no; }
以上就是如何在PHP項目中實現一個環形鏈表,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。