顺序队列的假溢出及顺序循环队列的表示(C++版)

来源:互联网 发布:2017单反推荐 知乎 编辑:程序博客网 时间:2024/06/01 07:32

顺序队列的假溢出:

按照前面所说的顺序队列的存储方法(http://blog.csdn.net/tongxinhaonan/article/details/26710019),有可能造成“假溢出”。

这种溢出不是因为存储空间不够而溢出,而是经过多次插入和删除操作引起的,像这种有存储空间而不能进行插入的元素操作的溢出称为“假溢出”。


为了避免顺序队列造成的“假溢出”现象,通常采用顺序循环队列来实现队列的顺序存储。


顺序循环队列的定义和顺序队列的定义是一样的:

#define QueueSize 40typedef struct Squeue{DataType queue[QueueSize];int front,rear;}SeqQueue;

顺序循环队列的实现:

(1)初始化操作。

void InitQueue(SeqQueue *SCQ){SCQ->front=SCQ->rear=0;}

(2)判断队列是否为空。

int QueueEmpty(SeqQueue SCQ){if (SCQ.front==SCQ.rear){return 1;}else{return 0;}}

(3)入队操作。

int EnterQueue(SeqQueue *SCQ,DataType x){if (SCQ->front==(SCQ->rear+1)%QueueSize){return 0;}SCQ->queue[SCQ->rear]=x;SCQ->rear=(SCQ->rear+1)%QueueSize;return 1;}

(4)出队操作。

int DeleteQueue(SeqQueue *SCQ,DataType *x){if (SCQ->rear==SCQ->front){return 0;}*x=SCQ->queue[SCQ->front];SCQ->front=(SCQ->front+1)%QueueSize;return 1;}


0 0