您好,登錄后才能下訂單哦!
本文將為大家詳細介紹“php如何實現單鏈表”,內容步驟清晰詳細,細節處理妥當,而小編每天都會更新不同的知識點,希望這篇“php如何實現單鏈表”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內容如下,一起去收獲新知識吧。
php實現單鏈表的方法:首先寫出鏈表節點的類;然后在鏈表中還定義兩個方法,分別是插入和刪除;接著獲取鏈表長度并添加節點數據;最后獲取節點名字并進行刪除或更新操作即可。
用PHP實現的單鏈表
單鏈表顧名思義就是一個鏈式數據結構,它有一個表頭,并且除了最后一個節點外,所有節點都有其后繼節點。如下圖。
首先,我們寫出鏈表節點的類。單鏈表中的每一個節點,都保存其數據域和后驅指針
//鏈表節點 class node { public $id; //節點id public $name; //節點名稱 public $next; //下一節點 public function __construct($id, $name) { $this->id = $id; $this->name = $name; $this->next = null; } }
鏈表中還有兩個特別重要的方法,插入和刪除。插入需要找到插入的位置,把前一個元素的next指針指向被插入的節點,并將被插入節點的next指針指向后一個節點,如下圖左側所示。而刪除則是把前一個節點的next指針指向后一個節點,并返回被刪除元素的數據內容,如下圖右側所示。
//單鏈表 class singelLinkList { private $header; //鏈表頭節點 //構造方法 public function __construct($id = null, $name = null) { $this->header = new node ( $id, $name, null ); } //獲取鏈表長度 public function getLinkLength() { $i = 0; $current = $this->header; while ( $current->next != null ) { $i ++; $current = $current->next; } return $i; } //添加節點數據 public function addLink($node) { $current = $this->header; while ( $current->next != null ) { if ($current->next->id > $node->id) { break; } $current = $current->next; } $node->next = $current->next; $current->next = $node; } //刪除鏈表節點 public function delLink($id) { $current = $this->header; $flag = false; while ( $current->next != null ) { if ($current->next->id == $id) { $flag = true; break; } $current = $current->next; } if ($flag) { $current->next = $current->next->next; } else { echo "未找到id=" . $id . "的節點!<br>"; } } //判斷連表是否為空 public function isEmpty(){ return $this->header == null; } //清空鏈表 public function clear(){ $this->header = null; } //獲取鏈表 public function getLinkList() { $current = $this->header; if ($current->next == null) { echo ("鏈表為空!"); return; } while ( $current->next != null ) { echo 'id:' . $current->next->id . ' name:' . $current->next->name . "<br>"; if ($current->next->next == null) { break; } $current = $current->next; } } //獲取節點名字 public function getLinkNameById($id) { $current = $this->header; if ($current->next == null) { echo "鏈表為空!"; return; } while ( $current->next != null ) { if ($current->id == $id) { break; } $current = $current->next; } return $current->name; } //更新節點名稱 public function updateLink($id, $name) { $current = $this->header; if ($current->next == null) { echo "鏈表為空!"; return; } while ( $current->next != null ) { if ($current->id == $id) { break; } $current = $current->next; } return $current->name = $name; } } $lists = new singelLinkList (); $lists->addLink ( new node ( 5, 'eeeeee' ) ); $lists->addLink ( new node ( 1, 'aaaaaa' ) ); $lists->addLink ( new node ( 6, 'ffffff' ) ); $lists->addLink ( new node ( 4, 'dddddd' ) ); $lists->addLink ( new node ( 3, 'cccccc' ) ); $lists->addLink ( new node ( 2, 'bbbbbb' ) ); $lists->getLinkList (); echo "<br>-----------刪除節點--------------<br>"; $lists->delLink ( 5 ); $lists->getLinkList (); echo "<br>-----------更新節點名稱--------------<br>"; $lists->updateLink ( 3, "222222" ); $lists->getLinkList (); echo "<br>-----------獲取節點名稱--------------<br>"; echo $lists->getLinkNameById ( 5 ); echo "<br>-----------獲取鏈表長度--------------<br>"; echo $lists->getLinkLength ();
如果你能讀到這里,小編希望你對“php如何實現單鏈表”這一關鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領會,如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。