#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
typedef struct Loopqueue {
int date[maxsize];
int front, rear;//队头,队尾指针
}Loopqueue;
int Initqueue(Loopqueue& q)
{
q.front = q.rear = maxsize - 1;
return 1;
}//初始化队列
void Insertqueue(Loopqueue& q)
{
int x, y;
printf("\n请输入入队的数据个数:\n");
scanf_s("%d", &y);
for (int i = 1; i <= y; i++)
{
printf("\n请输入一个入队的整数数据:");
scanf_s("%d", &x);
if ((q.rear + 1) % maxsize == q.front)
{
printf("\n队满,不能入队!\n");
return;
}
q.rear = (q.rear + 1) % maxsize;
q.date[q.rear] = x;
}
printf("\n入队成功!\n");
}//入队函数
void Outqueue(Loopqueue &q)
{
if (q.front == q.rear)
{
printf("\n队列为空,不能出队");
return;
}
while (q.front != q.rear)
{
q.front = (q.front + 1) % maxsize;
printf("\n出队元素为: %d\n", q.date[q.front]);
}
return;
}
void Showqueue(Loopqueue q)
{
if (q.rear == q.front)
{
printf("\n此队列为空!\n");
return;
}
printf("\n此队列元素为:");
do {
q.front = (q.front + 1) % maxsize;
printf("%d ", q.date[q.front]);
} while (q.rear != q.front);
printf("\n");
}
int length(Loopqueue q)
{
int k;
k = (q.rear - q.front + maxsize) % maxsize;
return k;
}
int main()
{
int i = 1;
int choice;
Loopqueue q;
Initqueue(q);
while (i)
{
printf("\n\t\t 循环队列\n");
printf("\n\t\t**********");
printf("\n\t\t*1--进队--*");
printf("\n\t\t*2--出队--*");
printf("\n\t\t*3--显示--*");
printf("\n\t\t*4--求队列长度--*");
printf("\n\t\t*0--返回--*");
printf("\n\t\t**********");
printf("请输入选择的操作的数字");
scanf_s("%d", &choice);
switch (choice)
{
case 1:
Insertqueue(q);
break;
case 2:
Outqueue(q);
break;
case 3:
Showqueue(q);
break;
case 4:
printf("\n\t\t队列长度为:%d\n", length(q));
break;
case 0:
i = 0;
break;
}
}
}
代码效果如下——