PHP環(huán)形鏈表實(shí)現(xiàn)方法示例
本文實(shí)例講述了PHP環(huán)形鏈表實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
環(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; }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php數(shù)據(jù)結(jié)構(gòu)之順序鏈表與鏈?zhǔn)骄€性表示例
- php線性表順序存儲(chǔ)實(shí)現(xiàn)代碼(增刪查改)
- php線性表的入棧與出棧實(shí)例分析
- PHP+MySQL統(tǒng)計(jì)該庫中每個(gè)表的記錄數(shù)并按遞減順序排列的方法
- php實(shí)現(xiàn)單鏈表的實(shí)例代碼
- PHP小教程之實(shí)現(xiàn)鏈表
- 淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)
- PHP小教程之實(shí)現(xiàn)雙向鏈表
- PHP實(shí)現(xiàn)單鏈表翻轉(zhuǎn)操作示例
- PHP鏈表操作簡(jiǎn)單示例
- php實(shí)現(xiàn)的順序線性表示例
相關(guān)文章
PHP使用Session實(shí)現(xiàn)上傳進(jìn)度功能詳解
這篇文章主要介紹了PHP使用Session實(shí)現(xiàn)上傳進(jìn)度功能,結(jié)合實(shí)例形式詳細(xì)分析了session上傳進(jìn)度顯示相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-08-08php數(shù)組函數(shù)序列之a(chǎn)rray_splice() - 在數(shù)組任意位置插入元素
array_splice() 函數(shù)與 array_slice() 函數(shù)類似,選擇數(shù)組中的一系列元素,但不返回,而是刪除它們并用其它值代替2011-11-11Windows上php5.6操作mongodb數(shù)據(jù)庫示例【配置、連接、獲取實(shí)例】
這篇文章主要介紹了Windows上php5.6操作mongodb數(shù)據(jù)庫,結(jié)合實(shí)例形式簡(jiǎn)單分析了Windows平臺(tái)上使用php5.6針對(duì)MongoDB數(shù)據(jù)庫的配置、連接、獲取實(shí)例等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02PHP中把對(duì)象轉(zhuǎn)換為關(guān)聯(lián)數(shù)組代碼分享
這篇文章主要介紹了PHP中把對(duì)象轉(zhuǎn)換為關(guān)聯(lián)數(shù)組代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04PHP的Yii框架中過濾器相關(guān)的使用總結(jié)
這篇文章主要介紹了PHP的Yii框架中過濾器相關(guān)的使用總結(jié),文中列舉了一些常用的核心過濾器,需要的朋友可以參考下2016-03-03整理的一些實(shí)用WordPress后臺(tái)MySQL操作命令
WordPress將其所有信息片段(包括文章、頁面、評(píng)論、博客鏈接、插件設(shè)置等)存儲(chǔ)在MySQL數(shù)據(jù)庫中。 雖然WordPress用戶可以通過網(wǎng)站后臺(tái)編輯控制以上信息片段2013-01-01PHP處理JSON字符串key缺少雙引號(hào)的解決方法
這篇文章主要介紹了PHP處理JSON字符串key缺少雙引號(hào)的解決方法,是非常常見的一類錯(cuò)誤處理情況,需要的朋友可以參考下2014-09-09PHP編碼規(guī)范-php coding standard
標(biāo)準(zhǔn)化問題在某些方面上讓每個(gè)人頭痛,讓人人都覺得大家處于同樣的境地。這有助于讓這些建議在許多的項(xiàng)目中不斷演進(jìn),許多公司花費(fèi)了許多星期逐子字逐句的進(jìn)行爭(zhēng)論。2007-03-03