简介
队列和堆栈刚好相反,最先进入队列的元素会最先走出队列。 继承自SplDoublyLinkedList类的SplQueue类
操作
enqueue:进入队列
dequeue:退出队列
代码实例
<?php
namespace app\index\controller;
use SplQueue;//引入队列类
class Index
{
public function index()
{
$obj = new SplQueue();//实例化队列类
$obj -> enqueue('a');//插入一个节点到队列里面的Top位置
$obj -> enqueue('b');
$obj -> enqueue('c');
dump($obj);
echo "Bottom:".$obj->bottom()."<br/>";
echo "Top:".$obj->top()."<br/>";
$obj-> offsetSet(0,'A');//队列里面offset=0是Bottom所在位置,offset=1是Top方向的相邻节点,以此类推
print_r($obj);
$obj -> rewind();//队列里面面rewind操作使得指针指向Bottom所在位置的节点
echo "current:".$obj->current()."<br/>";
while ($obj->valid()) {
echo $obj->key()."=>".$obj->current()."<br/>";
$obj->next();//next操作使得当前指针指向top方向的下一个节点
}
echo "dequeue obj:".$obj->dequeue()."<br/>";//dequeue操作从队列中提取bottom位置的节点,并返回.同时从队列脸删除该元素
dump($obj);
}
}
运行结果
object(SplQueue)#4 (2) {
["flags":"SplDoublyLinkedList":private] => int(4)
["dllist":"SplDoublyLinkedList":private] => array(3) {
[0] => string(1) "a"
[1] => string(1) "b"
[2] => string(1) "c"
}
}
Bottom:a
Top:c
SplQueue Object ( [flags:SplDoublyLinkedList:private] => 4 [dllist:SplDoublyLinkedList:private] => Array ( [0] => A [1] => b [2] => c ) ) current:A
0=>A
1=>b
2=>c
dequeue obj:A
object(SplQueue)#4 (2) {
["flags":"SplDoublyLinkedList":private] => int(4)
["dllist":"SplDoublyLinkedList":private] => array(2) {
[0] => string(1) "b"
[1] => string(1) "c"
}
}