更新时间:2023-12-20 08:20:12
你们好,最近小艾特发现有诸多的小伙伴们对于计算机循环队列是什么结构,循环队列是什么结构这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、一、要求
2、队列的顺序存储结构(循环队列)和操作实现。
3、二、代码
4、#include
5、#include
6、#define OVERFLOW -2
7、#define MAXQSIZE 100 /*队列的最大长度*/
8、typedef struct {
9、 int *base; // 队列的元素空间头指针指示器
10、 int front;
11、 int rear; /*尾指针指示器*/
12、}SqQueue;
13、int InitQueue(SqQueue &Q) {//初始化操作
14、Q.base = (int * )malloc(MAXQSIZE*sizeof(int));
15、if (!Q. base) exit (OVERFLOW);
16、Q.front=Q.rear =0;
17、return 1;
18、}
19、int EnQueue(SqQueue &Q) {//入队操作
20、int e;
21、if ((Q. rear+ 1) % MAXQSIZE == Q. front)
22、{
23、 printf("队列已满,不能进队\n");
24、 return -1;//满标志
25、}
26、printf("请输入进队元素:");
27、scanf("%d",&e);
28、Q.base[Q.rear] = e;//进队
29、Q.rear = (Q. rear + 1) % MAXQSIZE;//队尾指针后移
30、return 1;
31、}
32、int DeQueue (SqQueue &Q) {//出队操作
33、int e;
34、if (Q. front == Q. rear) {
35、 printf("队列已经为空\n");
36、 return -1;
37、}
38、e = Q. base[Q. front];//队头出队
39、printf("%d 出队\n",e);
40、Q.front = (Q.front + 1) % MAXQSIZE;//队头下标后移
41、return 1;
42、}
43、void tip()
44、{
45、printf("*************\n");
46、printf("*输入1 进队 *\n");
47、printf("*输入2 出队 *\n");
48、printf("*输入0 退出 *\n");
49、printf("*请选择: *\n");
50、printf("*************\n");
51、}
52、int main()
53、{
54、int k;
55、SqQueue Q;
56、InitQueue(Q);//初始化
57、tip();
58、while(scanf("%d",&k),k)
59、{
60、 switch(k)
61、 {
62、 case 1:
63、 EnQueue(Q);
64、 tip();
65、 printf("操作完毕\n");
66、 break;
67、 case 2:
68、 DeQueue(Q);
69、 tip();
70、 printf("操作完毕\n");
71、 break;
72、 }
73、}
74、return 0;
75、}
76、三、运行结果
以上就是循环队列是什么结构这篇文章的一些介绍,希望对大家有所帮助。