当前位置:   article > 正文

数据结构_顺序队列基本操作的实现_代码

数据结构_顺序队列基本操作的实现_代码

学习笔记

一、基本操作

1.初始化

2.判断队列是否为空

3.入队

4.出队

5.获得队头元素

6.队列的长度

二、尝试代码


一、基本操作

1.初始化

  1. //队列的顺序存储结构
  2. #define MaxSize 100
  3. typedef struct{
  4. int data[MaxSize];
  5. int front;
  6. int rear;
  7. int size;
  8. }SqQueue;
  9. //初始化
  10. void InitQueue(SqQueue &Q){
  11. Q.front = 0;
  12. Q.rear = 0;
  13. Q.size = 0;
  14. }

2.判断队列是否为空

  1. //判断队列是否为空
  2. bool QueueEmpty(SqQueue Q){
  3. if(Q.rear == Q.front) return true;
  4. else return false;
  5. }

3.入队

  1. //入队
  2. bool EnQueue(SqQueue &Q,int x){
  3. //判断队列已满
  4. if((Q.rear+1)%MaxSize == Q.front) return false;
  5. Q.data[Q.rear] = x;
  6. Q.rear = (Q.rear+1)%MaxSize;
  7. Q.size++;
  8. return true;
  9. }

4.出队

  1. //出队
  2. bool DeQueue(SqQueue &Q){
  3. //判断队空
  4. if(Q.rear == Q.front) return false;
  5. int x;
  6. x = Q.data[Q.front];
  7. Q.front = (Q.front+1)%MaxSize;
  8. Q.size--;
  9. return true;
  10. }

5.获得队头元素

  1. //获得队头元素
  2. int GetHead(SqQueue Q){
  3. if(Q.rear == Q.front) return false;
  4. int x;
  5. x = Q.data[Q.front];
  6. return x;
  7. }

6.队列的长度

  1. //队列的长度
  2. int QueueLength(SqQueue Q){
  3. return Q.size;
  4. }

二、尝试代码

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. //队列的顺序存储结构
  4. #define MaxSize 100
  5. typedef struct{
  6. int data[MaxSize];
  7. int front;
  8. int rear;
  9. int size;
  10. }SqQueue;
  11. //初始化
  12. void InitQueue(SqQueue &Q){
  13. Q.front = 0;
  14. Q.rear = 0;
  15. Q.size = 0;
  16. }
  17. //判断队列是否为空
  18. bool QueueEmpty(SqQueue Q){
  19. if(Q.rear == Q.front) return true;
  20. else return false;
  21. }
  22. //入队
  23. bool EnQueue(SqQueue &Q,int x){
  24. //判断队列已满
  25. if((Q.rear+1)%MaxSize == Q.front) return false;
  26. Q.data[Q.rear] = x;
  27. Q.rear = (Q.rear+1)%MaxSize;
  28. Q.size++;
  29. return true;
  30. }
  31. //出队
  32. bool DeQueue(SqQueue &Q){
  33. //判断队空
  34. if(Q.rear == Q.front) return false;
  35. int x;
  36. x = Q.data[Q.front];
  37. printf("此时出队的为: %d\n",x);
  38. Q.front = (Q.front+1)%MaxSize;
  39. Q.size--;
  40. return true;
  41. }
  42. //获得队头元素
  43. int GetHead(SqQueue Q){
  44. if(Q.rear == Q.front) return false;
  45. int x;
  46. x = Q.data[Q.front];
  47. return x;
  48. }
  49. //队列的长度
  50. int QueueLength(SqQueue Q){
  51. return Q.size;
  52. }
  53. int main(){
  54. SqQueue Q;
  55. InitQueue(Q);
  56. int x;
  57. scanf("%d",&x);
  58. while(x != 9999){
  59. printf("此时入队的是:%d\n",x);
  60. EnQueue(Q,x);
  61. scanf("%d",&x);
  62. }
  63. int len;
  64. len = QueueLength(Q);
  65. printf("此时队列的长度为:%d\n",len);
  66. int va_head = GetHead(Q);
  67. printf("此时的队头元素为:%d\n",va_head);
  68. while (Q.front != Q.rear) DeQueue(Q);
  69. len = QueueLength(Q);
  70. printf("此时队列的长度为:%d\n",len);
  71. return 0;
  72. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/582678
推荐阅读
相关标签
  

闽ICP备14008679号