02.10 程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

SPL::是PHP自帶的庫

當你苦苦的追求PHP數據結構、隊列之類的第三方庫時候,我會告訴你PHP官方也有這樣的類庫。

今天,我們來看看splDoublylinkedList類。

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

一,增加節點

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

我們看到,節點名稱是

[flags:SplDoublyLinkedList:private] => 0

節點數據是

[dllist:SplDoublyLinkedList:private] => Array
(
)

這就是雙向數據鏈表的基本結構。

我們用push()方法增加一條節點:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

那麼,我們看看unshift()方法是怎麼增加節點的?

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

我們看到:push方法增加的節點,會置於數據結構的後面(top、頂部)。unshift方法增加的節點會置於數據結構的前面(bottom、底部)。

二,刪除節點

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

對比得出結論:

pop方法刪除的是數據結構下面的節點(top),shift方法刪除的是數據結構上面的節點(bottom)。

三,節點操作

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

我們猜到是

通過unshift增加的節點三

結果恰好是

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

上下移動指針,下一個節點是?

我們猜測,是

通過unshift增加的節點二

結果恰好是

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

這時候呢?向前移動一個指針。

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

這點不難,next,prev方法就是前後移動指針,current方法告訴我們的是當前節點。

注意:節點操作必須先要使用rewind方法標出bottom(上面的第一個)節點,切記切記。

否則返回什麼?自己看。

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

我有個問題,這些方法都返回什麼?

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

增加節點全部返回1。

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

運行結果:

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

刪除節點,返回刪除節點數據。

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

程序員必學教程——神奇的PHP利劍:SPL操作之PHP雙向鏈表操作

除了current返回當前的數據,其他的均返回空

就到這兒,下期預告:堆棧。


分享到:


相關文章: