循环队列是非线性结构(循环队列)
你们好,最近小艾特发现有诸多的小伙伴们对于循环队列是非线性结构,循环队列这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
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、 初始化队列(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、 三、运行结果
以上就是循环队列这篇文章的一些介绍,希望对大家有所帮助。
免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。