课程来源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;
}