顺序队列

循环队列

为了方便指针计算,使用循环队列 循环队列出入队示意图

这样会导致最后一个结点不可用(不然队满和队空时前后指针都是一样,无法判断)

解决结点浪费问题

  1. 新增一个属性 size

    通过size属性为 0 还是 MaxSize 就能判断出队列是否为空

  2. 新增一个属性 tag

    只有增加时会导致队满,只有删除时会导致队空

错题集

  1. eRy864
答案与解析:
答案: D
解析:
数组 0 - n ,数组的长度为 n+1,所以入队操作为 rear = (rear+1) mod (n+1)
  1. 84j6Xn
答案与解析:
答案: B
解析:
front 指向队头元素,rear 指向队尾元素
第一个元素在 0 号位,所以这时候 front=rear
因为 rear 指向队尾元素,所以添加元素时会先向后移动一位在添加,队头不用动
所以队头还是 0,队尾是 0 的前边一位,也就是 n-1;