队列的顺序实现
typedef struct{
int data[MaxSize];
int front,rear;
} SqQueue;
顺序队列的初始化,front指向队头元素,rear指向队尾元素的后一个位置,即下一个应该插入的位置。
void Init(SqQueue q){
q.front=0;
q.rear=0;
}
判断队列是否为空
bool QueueEmpty(SqQueue q){
if (q.rear==q.front) {
return true;
}else{
return false;
}
}
循环队列的插入操作
因为判断队列是否为空是rear==front,所以判断队列是否满了,只能是rear比front少一个,即只能牺牲一个存储单元俩判断是否满了。用模运算将存储空间在逻辑上变成了环状
bool EnQueue(SqQueue *q,int x){
if ((q->rear+1)%MaxSize==q->front) {
return false;
}
q->data[q->rear]=x;
q->rear=(q->rear+1)%MaxSize;
return true;
}
出队操作
bool DeQueue(SqQueue *q,int *x){
if