InitQueue(&Q): 初始化队列Q
QueueEmpty(): 判断队列是否为空
EnQueue(e): 将元素e放入队尾
DeQueue(e): 移走队头元素,由e带回该元素的值
GetFront(): 获取队头元素的值,但不从队列中移走该元素
Length(): 计算并返回队列中元素的个数
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int *base;
int front;
int rear;
}SqQueue;
bool InitQueue(SqQueue &Q){
Q.base = (int *)malloc(5*sizeof(int));
if(!Q.base)
return false;
Q.front = Q.rear = 0;
return true;
}
bool QueueEmpty(SqQueue Q){
if(Q.front == Q.rear)
return true;
else
return false;
}
bool EnQueue(SqQueue &Q,int e){
if((Q.rear+1)%5 == Q.front)
return false;
Q.base[Q.rear] = e;
Q.rear = (Q.rear+1)%5;
return true;
}
int GetFront(SqQueue Q){
return Q.base[Q.front];
}
int Length(SqQueue Q){
return (Q.rear-Q.front+5)%5;
}
bool DeQueue(SqQueue &Q,int &e){
if(Q.front == Q.rear)
return false;
e = Q.base[Q.front];
Q.front = (Q.front+1)%5;
return true;
}
int main(){
SqQueue Q;
int e;
InitQueue(Q);
if(QueueEmpty(Q))
printf("循环队列为空\n");
else
printf("循环队列不为空\n");
for(int i = 0;i < 3; i++){
printf("请输入第%d个元素:",i+1);
scanf("%d",&e);
EnQueue(Q,e);
}
if(QueueEmpty(Q))
printf("循环队列为空\n");
else
printf("循环队列不为空\n");
printf("队头元素为:%d\n",GetFront(Q));
printf("元素个数为:%d\n",Length(Q));
if(DeQueue(Q,e))
printf("出队元素为:%d\n",e);
else
printf("出队失败!");
printf("队头元素为:%d\n",GetFront(Q));
printf("元素个数为:%d\n",Length(Q));
return 0;
}