当前位置:   article > 正文

队列的顺序存储实现和链式存储实现_现采用大小为10的数组实现一个循环队列。设在某一时刻,队列为空且此时front和rear值均为5。经

现采用大小为10的数组实现一个循环队列。设在某一时刻,队列为空且此时front和rear值均为5。经过若干操作后,front为8,rear为2,问:此时队列中有多少个元素? a 4 b 5 c 6 d 7


队列的顺序存储实现

  1. //队列的顺序存储实现
  2. #define MaxSize<储存数据元素的最大个数>
  3. struct QNode{
  4. ElementType Data[MaxSize];//一维数组
  5. int rear;//记录队列尾元素位置的变量
  6. int front;//记录队列头元素位置的变量
  7. };
  8. typedef struct QNode *Queue;
  9. //循环队列:front=rear为什么无法判别队列是空还是满?
  10. //front与rear差距有6种情况0~5 n种
  11. //队列装载元素个数情况有7种0~6 n+1种
  12. //用n种状态来区分n+1种情况
  13. //解决方案:
  14. //(1)使用额外标记:Size或者tag域,Size记录元素个数,加入元素时Size+1,删除时Size-1
  15. //标记元素tag 0~1,插入元素时tag置1,删除元素时tag置0,查看tag值可知最后一次操作
  16. //(2)仅使用n-1个数组空间
  17. //1.入队列
  18. void AddQ(Queue PtrQ,ElementType item)
  19. {
  20. if((PtrQ->rear+1)%MaxSize==PtrQ->front){
  21. printf("队列满");//循环队列,5的下一位为0,使用求余函数
  22. return;
  23. }
  24. PtrQ->rear=(PtrQ->rear+1)%MaxSize;
  25. PtrQ->Data[PtrQ->rear]=item;//将item放入
  26. }
  27. //2.出队列
  28. ElementType DeleteQ(Queue PtrQ)
  29. {
  30. if(PtrQ->fron
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/551905
推荐阅读
相关标签
  

闽ICP备14008679号