🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# [SplQueue](https://www.php.net/manual/zh/class.splqueue.php#class.splqueue) 重写与新增的方法 ``` __construct ( void ) dequeue ( void ) : mixed //将一个节点从队列里移除并返回 enqueue ( mixed $value ) : void //向队列添加元素(插入一个节点到队列里面的Top位置) setIteratorMode ( int $mode ) : void ``` >其余继承与SplDoublyLinkedList ## **用法:** ~~~ $stack = new SplStack();//继承自SplDoublyLinkedList类 $stack[] = 1;//[0=>1] $stack[] = 2;//[0=>1,1=>2] $stack[] = 3;//[0=>1,1=>2,2=>3] //$stack->add(4,5); //报错超出偏移量 $stack->add(3,4); //添加一个元素到尾部 $stack->push("a"); $stack->push("b"); //[0=>1,1=>2,2=>3,3=>4,4=>'a',5=>'b'] //尾部弹出一个元素 echo $stack->pop(); echo $stack->pop(); //[0=>1,1=>2,2=>3,3=>4] $stack->offsetSet(0,'B');//等同$stack[0]='B'; //[0=>1,1=>2,2=>3,3=>'B'] //将指针指向迭代开始处 Iterator //双向链表的rewind和堆栈的rewind相反,堆栈的rewind使得当前指针指向Top所在的位置,而双向链表调用之后指向bottom所在位置 $stack->rewind(); echo 'current:'.$stack->current();//current:B $stack->next();//堆栈的next操作使指针指向靠近bottom位置的下一个节点,而双向链表是靠近top的下一个节点 echo 'current:'.$stack->current();//current:3 $stack->rewind(); while($stack->valid()){ echo $stack->current(),"\n"; $stack->next();//B 3 2 1 } for ($stack->rewind(); $stack->valid(); $stack->next()) { echo $stack->current();//B 3 2 1 } ~~~