数据结构之循环队列的操作

╰半夏微凉° 2022-04-24 07:46 259阅读 0赞
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. using namespace std;
  5. #define MAX 100
  6. typedef int QElemType;
  7. typedef int Status;
  8. typedef struct
  9. {
  10. QElemType *base;
  11. int front;
  12. int rear;
  13. }SqQueue;
  14. Status InitQueue(SqQueue &Q)
  15. {//构建一个空队列Q
  16. Q.base=(QElemType*)malloc(MAX*sizeof(QElemType));
  17. if(!Q.base)exit(0);
  18. Q.front=Q.rear=0;
  19. return 1;
  20. }
  21. int QueueLength(SqQueue Q)
  22. {//返回Q元素个数,即队列长度
  23. return (Q.rear-Q.front+MAX)%MAX;
  24. }
  25. Status EnQueue(SqQueue &Q,QElemType e)
  26. {//插入元素e为Q的新的队尾元素
  27. if((Q.rear+1)%MAX==Q.front)return 0;
  28. Q.base[Q.rear]=e;
  29. Q.rear=(Q.rear+1)%MAX;
  30. return 1;
  31. }
  32. Status DeQueue(SqQueue &Q,QElemType &e)
  33. {//若队列不空,则删除Q的队头元素,用e返回其值
  34. if(Q.front==Q.rear) return 0;
  35. e=Q.base[Q.front];
  36. Q.front=(Q.front+1)%MAX;
  37. return 1;
  38. }
  39. int main()
  40. {
  41. SqQueue Q;
  42. int e;
  43. InitQueue(Q);
  44. cout<<"插入三个队列元素"<<endl;
  45. for(int i=0;i<3;i++)
  46. {
  47. cin>>e;
  48. EnQueue(Q,e);
  49. }
  50. cout<<"队列长度为"<<QueueLength(Q)<<endl;
  51. cout<<"队头元素出队"<<endl;
  52. DeQueue(Q,e);
  53. cout<<e<<endl;
  54. cout<<"队列长度为"<<QueueLength(Q)<<endl;
  55. cout<<"队尾再插入一个元素:"<<endl;
  56. cin>>e;
  57. EnQueue(Q,e);
  58. cout<<"队列长度为"<<QueueLength(Q)<<endl;
  59. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,259人围观)

还没有评论,来说两句吧...

相关阅读