php splqueue 5.5安装,解析PHP标准库SPL数据结构
SPL提供了雙向鏈表、堆棧、隊(duì)列、堆、降序堆、升序堆、優(yōu)先級(jí)隊(duì)列、定長數(shù)組、對(duì)象容器
SplQueue 隊(duì)列類
進(jìn)出異端,先進(jìn)先出
<?php $obj = new SplQueue();//插入一個(gè)節(jié)點(diǎn)到top位置$obj->enqueue(1);
$obj->enqueue(2);
$obj->enqueue(3);/**
SplQueue Object
(
[flags:SplDoublyLinkedList:private] => 4
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
*/$obj->offsetSet(0,'C');/**
SplQueue Object
(
[flags:SplDoublyLinkedList:private] => 4
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 'C'
[1] => 2
[2] => 3
)
)
*/$obj->rewind();//從隊(duì)列中返回并刪除bottom位置的元素$obj->dequeue();/**
'C'
SplQueue Object
(
[flags:SplDoublyLinkedList:private] => 4
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 2
[1] => 3
)
)
*/復(fù)制代碼
SplStack 堆棧類
單端進(jìn)出時(shí),后進(jìn)先出,先進(jìn)后出
$obj = new SplStack();/**
SplStack Object
(
[flags:SplDoublyLinkedList:private] => 6
[dllist:SplDoublyLinkedList:private] => Array
(
)
)
*///向堆棧放入一個(gè)節(jié)點(diǎn)到top位置$obj->push(1);
$obj->push(2);
$obj->push(3);/**
SplStack Object
(
[flags:SplDoublyLinkedList:private] => 6
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
*///堆棧的offset = 0 是Top所在的位置,offset = 1 是top節(jié)點(diǎn)靠近bottom位置的相鄰節(jié)點(diǎn)$obj->offsetSet(0,'C');/**
SplStack Object
(
[flags:SplDoublyLinkedList:private] => 6
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 1
[1] => 2
[2] => 'C'
)
)
*/$obj->offsetSet(1,'B');/**
SplStack Object
(
[flags:SplDoublyLinkedList:private] => 6
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 1
[1] => 'B'
[2] => 'C'
)
)
*///堆棧的rewind使指針指向top節(jié)點(diǎn),而雙向鏈表的rewind指向bottom節(jié)點(diǎn)$obj->rewind();//堆棧的next是使指針向bottom方向相鄰的節(jié)點(diǎn)移動(dòng)一位,而鏈表是向top方向移動(dòng)$obj->next();//遍歷堆棧$obj->rewind();while($obj->valid()){ echo $obj->key().'=>'.$obj->current();
$obj->next();
}/**
2=>'C'
1=>'B'
0=>1
*///從堆棧中取出top位置的節(jié)點(diǎn)并刪除$obj->pop();復(fù)制代碼
SplDoublyLinkedList 雙向鏈表類
$obj = new SplDoublyLinkedList();//SplDoublyLinkedList Object ( [flags:SplDoublyLinkedList:private] => 0 [dllist:SplDoublyLinkedList:private] => Array ( ) )//把新的節(jié)點(diǎn)數(shù)據(jù)添加到鏈表的頂部Top$obj->push(1);
$obj->push(2);
$obj->push(3);//把新的節(jié)點(diǎn)數(shù)據(jù)添加到鏈表底部bottom$obj->unshift(4);/**
SplDoublyLinkedList Object
(
[flags:SplDoublyLinkedList:private] => 0
[dllist:SplDoublyLinkedList:private] => Array
(
[0] => 4
[1] => 1
[2] => 2
[3] => 3
)
)
*///在沒有調(diào)用rewind()方法之前輸出為nullecho 'current'.$obj->current();//輸出: null//把指針指向bottom節(jié)點(diǎn)$obj->rewind();//獲取當(dāng)前指針指向的節(jié)點(diǎn)$obj->current();//輸出: 4//將執(zhí)行挪到下一個(gè)$obj->next();
$obj->current();//輸出: 1$obj->prev();
$obj->current();//輸出: 4//越界了$obj->next();
$obj->next();
$obj->next();
$obj->next();
$obj->current();//輸出: null//判斷當(dāng)前節(jié)點(diǎn)是否有效$obj->valid()//輸出: false$obj->prev();
$obj->valid()//輸出: true$obj->shift();//把top節(jié)點(diǎn)從鏈表中刪除并返回$obj->pop();//輸出 3//把bottom節(jié)點(diǎn)從鏈表中刪除并返回$obj->shift();//輸出 4//返回top節(jié)點(diǎn)$obj->top();//返回bottom節(jié)點(diǎn)$obj->bottom();復(fù)制代碼
感謝您的閱讀,如果對(duì)您有幫助,歡迎關(guān)注”CRMEB”。碼云上有我們開源的商城項(xiàng)目,知識(shí)付費(fèi)項(xiàng)目,均是基于PHP+vue開發(fā),學(xué)習(xí)研究歡迎使用,關(guān)注我們保持聯(lián)系!
想了解更多編程學(xué)習(xí),敬請(qǐng)關(guān)注php培訓(xùn)欄目!
總結(jié)
以上是生活随笔為你收集整理的php splqueue 5.5安装,解析PHP标准库SPL数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tap titans乐趣
- 下一篇: CSS HACK 区别 IE6、IE7、