欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

队列的线性表实现

程序员文章站 2022-07-14 14:02:04
...

问题:

请设计一个队列,要求满足:
1、初始时队列为空;
2、入队时,允许增加队列占用空间;
3、出队后,出队元素所占用的空间可重复使用,即整个队列所占用的空间只增不减;
4、入队操作和出队操作的时间复杂度始终保持O(1)。
请回答下列问题:
1)该队列是应该选择链式存储结构,还是应选择顺序存储结构?
2)画出队列的初始状态,并给出判断队空和队满的条件
3)画出第一个元素入队后的队列状态。
4)给出入队操作和出队操作的基本过程。

解:

(1)链式存储
(2)

判空:
Q.front = Q.rear
判满:
 Q.front = Q.rear->next

(3) 略。
(4)

入队:
if(Q.front == Q.rear->next){
    s->data = x;

    s->next = Q.rear->next;
    Q.rear->next = s;
    Q.rear = s;
}
出队:
f(Q.front != Q.rear){
    e = Q.front->data;
    Q.front = Q.front->next;
}