首页 > 生活 >

循环队列是非线性结构(循环队列)

发布时间:2023-09-22 00:21:52来源:

你们好,最近小艾特发现有诸多的小伙伴们对于循环队列是非线性结构,循环队列这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

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、 三、运行结果

以上就是循环队列这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。