循环队列

来源:互联网 发布:切削力计算软件 下载 编辑:程序博客网 时间:2024/05/29 04:03

课程来源mooc西北大学数据结构

基本思路 取模运算 

判空条件front==rear

判满条件 (rear+1)%MAXSIZE==front

队列长度 

① rear>front

rear-front个

① rear<front

(rear-front+MAXSIZE)%MAXSIZE

综上 个数等于(rear-front+MAXSIZE)%MAXSIZE


typedef struct SeqQueue{int element[MAXSIZE];int front;int rear;}SeqQueue,*PSeqQueue;void InitSQ(PSeqQueue &Q){Q->front = Q->rear=0;//initialization}bool IsEmpty(const PSeqQueue &Q){if (Q->front == Q->rear)return true;return false;}bool EnterQueue(PSeqQueue &Q,int x){if ((Q->rear + 1) % MAXSIZE == Q->front)//Is full?{cout << "The SeqQueue is full!" << endl;return false;}Q->element[Q->rear] = x;Q->rear = (Q->rear + 1)%MAXSIZE;//rear++ most rear is MAXSIZE-1;return true;}bool DeleteQueue(PSeqQueue &Q, int *x){if (IsEmpty(Q)){cout << "The SeqQueue is empty!" << endl;return false;}*x = Q->element[Q->front];Q->front = (Q->front + 1) % MAXSIZE; //front++;}int LengthQueue(const PSeqQueue &Q){return (Q->rear - Q->front + MAXSIZE) % MAXSIZE;}







0 0
原创粉丝点击