代码步骤:初始化循环队列,判断循环队列是否为空,入队,出队。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define MAXSIZE 50
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE];
int front,rear;
}SqQueue;
void InitQueue(SqQueue& Q)
{
Q.front = Q.rear = 0;//初始化循环队列就是让头和尾都指向零号元素
}
bool IsEmpty(SqQueue Q)
{
if (Q.front == Q.rear)
return true;
return false;
}
bool EnQueue(SqQueue& Q, ElemType 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,ElemType& x)
{
if (Q.rear == Q.front)
{
return false;
}
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return true;
}
int main()
{
SqQueue Q;
InitQueue(Q);
bool ret;
ret = IsEmpty(Q);
if (ret)
{
printf("队列为空\n");
}
else
{
printf("队列不为空\n");
}
EnQueue(Q, 3);
EnQueue(Q, 4);
ret=EnQueue(Q, 5);
if (ret)
{
printf("入队成功\n");
}
else
{
printf("入队失败\n");
}
ElemType element;
ret=DeQueue(Q,element);
if (ret)
{
printf("出队成功\n");
}
else
{
printf("出队失败\n");
}
return 0;
}