进出异端,前辈先出
<?php$obj = new SplQueue();//插入一个节点到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();//从行列步队中返回并删除bottom位置的元素$obj->dequeue();/'C'SplQueue Object( [flags:SplDoublyLinkedList:private] => 4 [dllist:SplDoublyLinkedList:private] => Array ( [0] => 2 [1] => 3 ))/12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
SplStack 堆栈类
单端进出时,后进先出,前辈后出

$obj = new SplStack();/SplStack Object( [flags:SplDoublyLinkedList:private] => 6 [dllist:SplDoublyLinkedList:private] => Array ( ))///向堆栈放入一个节点到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节点靠近bottom位置的相邻节点$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节点,而双向链表的rewind指向bottom节点$obj->rewind();//堆栈的next是使指针向bottom方向相邻的节点移动一位,而链表是向top方向移动$obj->next();//遍历堆栈$obj->rewind();while($obj->valid()){ echo $obj->key().'=>'.$obj->current(); $obj->next();}/2=>'C'1=>'B'0=>1///从堆栈中取出top位置的节点并删除$obj->pop();123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
SplDoublyLinkedList 双向链表类
$obj = new SplDoublyLinkedList();//SplDoublyLinkedList Object ( [flags:SplDoublyLinkedList:private] => 0 [dllist:SplDoublyLinkedList:private] => Array ( ) )//把新的节点数据添加到链表的顶部Top$obj->push(1);$obj->push(2);$obj->push(3);//把新的节点数据添加到链表底部bottom$obj->unshift(4);/SplDoublyLinkedList Object( [flags:SplDoublyLinkedList:private] => 0 [dllist:SplDoublyLinkedList:private] => Array ( [0] => 4 [1] => 1 [2] => 2 [3] => 3 ))///在没有调用rewind()方法之前输出为nullecho 'current'.$obj->current();//输出: null//把指针指向bottom节点$obj->rewind();//获取当前指针指向的节点$obj->current();//输出: 4//将实行挪到下一个$obj->next();$obj->current();//输出: 1$obj->prev();$obj->current();//输出: 4//越界了$obj->next();$obj->next();$obj->next();$obj->next();$obj->current();//输出: null//判断当前节点是否有效$obj->valid()//输出: false$obj->prev();$obj->valid()//输出: true$obj->shift();//把top节点从链表中删除并返回$obj->pop();//输出 3//把bottom节点从链表中删除并返回$obj->shift();//输出 4//返回top节点$obj->top();//返回bottom节点$obj->bottom();12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
感谢您的阅读,如果对您有帮助,欢迎关注"CRMEB"头条号。码云上有我们开源的商城项目,知识付费项目,均是基于PHP+vue开拓,学习研究欢迎利用,关注我们保持联系!