/*2.判断队列空*/
Status QueueEmpty(SqQueue Q){if(Q.rear == Q.front)//队空条件returntrue;elsereturnfalse;}
3.入队
/*3.入队*/
Status EnQueue(SqQueue& Q, ElemType x){//队头指针在队尾指针的下一个位置作为队满的标志if((Q.rear +1)% Maxsize == Q.front)returnfalse;//队满则报错
Q.data[Q.rear]= x;//将x插入队尾
Q.rear =(Q.rear +1)% Maxsize;//队尾指针加1取模returntrue;}
4.出队
/*4.出队*/
Status DeQueue(SqQueue& Q, ElemType& x){if(Q.front == Q.rear)returnfalse;//队空则报错
x = Q.data[Q.front];//将队头元素赋给x
Q.front =(Q.front +1)% Maxsize;//队头指针加1取模returntrue;}
循环队列的完整代码
/*实现循环队列的基本操作*/#include<stdio.h>#include<stdlib.h>#defineMaxsize20typedefint ElemType;typedefbool Status;/*0.定义循环队列的基本结构*/typedefstruct{
ElemType data[Maxsize];//用静态数组存放队列元素int front, rear;//队头指针与队尾指针}SqQueue;/*1.初始化队列*/voidInitQueue(SqQueue& Q){//初试时,队头、队尾指针指向0
Q.front = Q.rear =0;}/*2.判断队列空*/
Status QueueEmpty(SqQueue Q){if(Q.rear == Q.front)//队空条件returntrue;elsereturnfalse;}/*3.入队*/
Status EnQueue(SqQueue& Q, ElemType x){//队头指针在队尾指针的下一个位置作为队满的标志if((Q.rear +1)% Maxsize == Q.front)returnfalse;//队满则报错
Q.data[Q.rear]= x;//将x插入队尾
Q.rear =(Q.rear +1)% Maxsize;//队尾指针加1取模returntrue;}/*4.出队*/
Status DeQueue(SqQueue& Q, ElemType& x){if(Q.front == Q.rear)returnfalse;//队空则报错
x = Q.data[Q.front];//将队头元素赋给x
Q.front =(Q.front +1)% Maxsize;//队头指针加1取模returntrue;}intmain(){
SqQueue Q;
ElemType x;InitQueue(Q);EnQueue(Q,3);DeQueue(Q, x);printf("%d\n", x);return0;}