【C++】顺序队列、循环队列、带链队列”队空队满时,队头队尾指针的情况分析

顺序队列的三种状态

  1. 队空
     qu.front == qu.rear
     如图1所示,当顺序队列队空时,队头指针front和队尾指针rear相同;注意front和rear不是真正的指针,而是int型变量,代表元素下标。
    注:随着出队入队的操作,当出现队空状态时,队头队尾指针不一定指向第一个元素。
    图1 顺序队列的队空状态

  2. 队满
     qu.front == 0;qu.rear == max+1
    图2 顺序队列的队满状态

  3. 一般状态
     qu.front == 0;qu.rear == n;//此时队内元素总数为n-1
    图3 顺序队列的一般状态

循环队列的三种状态

  1. 队空
     qu.front == qu.rear
     如图所示,当循环队列队空时,队头指针front和队尾指针rear相同。
    图4 循环队列的队空状态

  2. 队满
     qu.front == qu.rear
     如图所示,当循环队列队满时,队头指针front和队尾指针rear相同。
    图5 循环队列的队满状态

  3. 一般状态
     qu.front == 0;qu.rear == n; //队内元素总数为n-1
    图6 循环队列的一般状态

带链队列的三种状态

  1. 一般状态
     在带链队列中,front和rear是真正的指针,指向节点的指针。
    图7 带链队列的一般状态

  2. 队空
     lqu->front == NULL 或 lqu->rear == NULL 即当带链队列为空时,队头指针front和队尾指针rear相同(都为空)。
    图8 带链队列的队空状态

  3. 队内只有一个元素
     lqu->front == lqu->rear
     与队空的情况相似,当带链队列只有一个元素时,队头指针front和队尾指针rear相同。
    图9 只有一个节点

  4. 队满
     带链队列不存在队满的情况。

————————— 本文结束 感谢您的阅读 —————————
谢谢你请我喝咖啡ლↂ‿‿ↂლ(支付宝扫一扫即可领红包, 消费时可抵现! 你省钱, 我赚钱, 多谢支持~)