数据结构(第4版) P82页 3-15
设顺序双向循环队列的数据结构定义为:
typedef struct
{
DataType list[MaxSize]
int front; //队头指针
int rear; //队尾指针
}BSeqCQueue;
设Q为BSeqCQueue类型的指针参数(即输出型参数),并设初始化操作时有:Q->rear=
Q->front=0,现要求:
给出顺序双向循环队列的入队列操作和出队列操作算法思想。
要程序,能放进C里面运行的,谢谢啦
设顺序双向循环队列的数据结构定义为:
设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-1<0时,令Q->front= MaxSize-1)
(2)算法思想:正向循环队列的入队和出队操作算法与顺序循环队列的入队和出队操作算法完全相同;反向循环队列的入队和出队操作算法与顺序循环队列的入队和出队操作算法思想类似,但要把rear看做是队头指针,把front看做是队尾指针,入队操作且当front-1<0时,令front= MaxSize-1。其算法描述如下: