艾特商业网

计算机循环队列是什么结构(循环队列是什么结构)

更新时间: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、三、运行结果

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

免责声明:本文由用户上传,如有侵权请联系删除!