雙向鍊錶類別:SplDoublyLinkedList
push:向鍊錶的尾部插入一個節點
pop:取得鍊錶中的尾部節點,並且從鍊錶中刪除這個節點;操作不會改變目前指標的位置
unshift:將一個節點插入鍊錶的頭部
shift:刪除一個鍊錶頭部節點
rewind:使鍊錶的目前指標指向鍊錶的頭部(即bottom)
current:取得鍊錶目前節點指標指向的元素,必須在呼叫之前先呼叫rewind。當指向的節點被刪除之後,會指向一個空節點
next:讓鍊錶目前的指標指向下一個節點,curent的回傳值隨之改變
bottom:取得鍊錶頭部元素,目前指針位置不變
top:取得鍊錶尾部元素,目前指標位置不變
valid:檢查鍊錶中是否還存在節點,循環輸出時,可以用作判斷
count:統計鍊錶中節點的個數
key:傳回目前節點的鍵值
offsetSet :設定指定鍵的值,注意:如鍵為0,在鍊錶中0指向頭部即bottom,在堆疊中指向棧頂。
offunset:註銷指定鍵的值
<code><span><?</span>php <span>/** * Created by 马廷广 * User: 马廷广 * Date: 2015/8/5 * Time: 10:52 */</span><span>$obj</span><span>=</span><span>new</span> SplDoublyLinkedList(); <span>$obj</span><span>-></span>push(<span>'b'</span>); <span>$obj</span><span>-></span>push(<span>'c'</span>); <span>$obj</span><span>-></span>unshift(<span>'a'</span>); var_dump(<span>$obj</span>); <span>/* array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } ) */</span><span>$obj</span><span>-></span>rewind(); var_dump(<span>$obj</span><span>-></span>current());<span>//string(1) "a"</span><span>$obj</span><span>-></span>next(); var_dump(<span>$obj</span><span>-></span>current());<span>//string(1) "a"</span> var_dump(<span>$obj</span><span>-></span>bottom());<span>//string(1) "a"</span> var_dump(<span>$obj</span><span>-></span>top());<span>//string(1) "c"</span> var_dump(<span>$obj</span><span>-></span>pop());<span>//string(1) "c"</span> var_dump(<span>$obj</span>); <span>/* * array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } */</span> var_dump(<span>$obj</span><span>-></span>shift());<span>//string(1) "a"</span> var_dump(<span>$obj</span>); <span>/* * array(1) { [0]=> string(1) "b" } */</span></code>
堆疊類別:繼承自SplDoublyLinkedList類別的SplStack類別
原理:堆疊類別的底層是由堆疊實現的,堆疊是一種先進後出的資料結構,所以SplStack類別的一些繼承自SplDoublyLinkedList類別的方法有一些理解上的不同,如rewind方法,spl使用rewind方法後指標會指向圖中的棧頂,push和pop操作的是棧頂元素,unshift和shift操作的是棧底元素
<code><span><?</span>php <span>/** * Created by 马廷广 * User: 马廷广 * Date: 2015/8/5 * Time: 11:47 */</span><span>$stack</span><span>=</span><span>new</span> SplStack(); <span>$stack</span><span>-></span>push(<span>'a'</span>); <span>$stack</span><span>-></span>push(<span>'b'</span>); <span>$stack</span><span>-></span>push(<span>'c'</span>); echo <span>$stack</span><span>-></span>count();<span>//3</span><span>$stack</span><span>-></span>rewind(); echo <span>$stack</span><span>-></span>current();<span>//c</span><span>$stack</span><span>-></span>offsetSet(<span>0</span>,<span>'d'</span>);<span>//offsetSet中0指向的是图中的栈顶,由栈顶向下递增1,2,3,4</span><span>while</span>(<span>$stack</span><span>-></span>valid()){ echo <span>$stack</span><span>-></span>key()<span>.</span><span>"->"</span><span>.</span><span>$stack</span><span>-></span>current(); <span>$stack</span><span>-></span>next(); } <span>/*2->d 1->b 0->a */</span></code>
隊列類別:繼承自SplDoublyLinkedList類別的SplQueue類別
enqueue:進入佇列
dequeue:退出隊列
隊列類別的rewind,offsetSet等方法類似鍊錶
<code><?php /** * Created <span>by</span> 马廷广 * <span>User</span>: 马廷广 * <span>Date</span>: <span>2015</span>/<span>8</span>/<span>5</span> * <span>Time</span>: <span>12</span>:<span>36</span> */ $obj = <span>new</span> SplQueue(); $obj->enqueue(<span>'a'</span>); $obj->enqueue(<span>'b'</span>); $obj->enqueue(<span>'c'</span>); var_dump($obj); /* [<span>0</span>]<span>=></span> string(<span>1</span>) <span>"a"</span> [<span>1</span>]<span>=></span> string(<span>1</span>) <span>"b"</span> [<span>2</span>]<span>=></span> string(<span>1</span>) <span>"c"</span> } */ $obj->unshift(<span>"d"</span>); $obj->push(<span>'e'</span>); var_dump($obj); /* * array(<span>5</span>) { [<span>0</span>]<span>=></span> string(<span>1</span>) <span>"d"</span> [<span>1</span>]<span>=></span> string(<span>1</span>) <span>"a"</span> [<span>2</span>]<span>=></span> string(<span>1</span>) <span>"b"</span> [<span>3</span>]<span>=></span> string(<span>1</span>) <span>"c"</span> [<span>4</span>]<span>=></span> string(<span>1</span>) <span>"e"</span> } */ $obj->rewind(); echo $obj->current();<span>//</span>d $obj->offsetSet(<span>0</span>,<span>'h'</span>); var_dump($obj); /* * array(<span>5</span>) { [<span>0</span>]<span>=></span> string(<span>1</span>) <span>"h"</span> [<span>1</span>]<span>=></span> string(<span>1</span>) <span>"a"</span> [<span>2</span>]<span>=></span> string(<span>1</span>) <span>"b"</span> [<span>3</span>]<span>=></span> string(<span>1</span>) <span>"c"</span> [<span>4</span>]<span>=></span> string(<span>1</span>) <span>"e"</span> } */</code>
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
以上就介紹了php標準庫spl之鍊錶,堆疊,隊列,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。