php双向队列数据结构 双向链表实现队列

用PHP写的这个双向队列应该怎么使用?php
class Deque{
private $queue = array();
public function addFirst($item){
return array_unshift($this-queue, $item);
}
public function addLast($item){
return array_push($this-queue, $item);
}
public function removeFirst(){
return array_shift($this-queue);
}
public function removeLast(){
return array_pop($this-queue);
}
}
数据结构:队列:双端队列输出受限php双向队列数据结构的双端队列,即删除限制在一端进行,而插入仍允许在两端进行.
输入受限的双端队列,即插入限制在一端进行,而删除仍允许在两端进行.
理解php双向队列数据结构了概念之后看看题目php双向队列数据结构,应该比较容易理解了:
第一题:
由于队列输出受限 , 故只能在一端进行输出:
分析答案A:A的输入序列为abcd,输出结果为dacb,由输出受限性质可知da开头的结果只有dabc; A项为错误答案;
分析答案B:B的输出结果为:cadb ;其输入输出顺序为(可以画图帮助理解): 先输入a,然后在非输出端输入b,这时队列的序列为ba(假设左端为限制端,下同),接着在输入端输入c,这时队列的序列为bac,输出c,再输出a , 在输出端输入d , 这时队列的序列为bd,输出d , 输出b;得到输出序列为cadb;
分析答案D:先输入a,接着在输出端输入b,然后再另一端输入c,最后在输出端输入d,这时队列的序列为cabd;其输出结果为dbac;
分析答案C:由db开头的输出结果只有dbac;故错误;
我要交课程设计,最好详细点 。。。。。。。谢谢了设顺序双向循环队列的数据结构定义为:
设Q为BSeqCQuene类变量,并设初始化操作时有Q-rear=Q-front=0,要求:
(1)给出顺序双向循环队列满和空的条件;
(2)给出顺序双向循环队列抽象数据类型BSeqCQuene的入队和出队的操作算法 。
例题23分析
(1)对于正向循环队列,front为队头指针,rear为队尾指针 , 正向循环队列的数据元素下标值递增;对于反向循环队列,则rear为队头指针,front为队尾指针,反向循环队列的数据元素下标值递减 。设计双向循环队列的方法类似于顺序循环队列的设计方法,即把表元素设计成首尾衔接 。因此,有
正向循环队列:队列空的条件为Q-rear=Q-front
队列满的条件为(Q-rear+1)%MaxSize=Q-front
反向循环队列:队列空的条件为Q-rear=Q-front
队列满的条件为Q- front -1=Q- rear
(当Q-front-10时 , 令Q-front= MaxSize-1)
(2)算法思想:正向循环队列的入队和出队操作算法与顺序循环队列的入队和出队操作算法完全相同;反向循环队列的入队和出队操作算法与顺序循环队列的入队和出队操作算法思想类似,但要把rear看做是队头指针 , 把front看做是队尾指针,入队操作且当front-10时,令front= MaxSize-1 。其算法描述如下:
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO) 。
PHP
SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现 。
SplQueue类摘要如下:
SplQueue简单使用如下:
复制代码
代码如下:
$queue
=
new
SplQueue();
/**
*
可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
*
(1)SplDoublyLinkedList::IT_MODE_FIFO
【php双向队列数据结构 双向链表实现队列】

推荐阅读