循环队列
用数组实现队列时,如果不移动,随着数组的不断读写,会出现假满队列的情况。即尾数组已满,但头数组还是空的。循环队列解决了这个问题,在逻辑上把数组的头尾相连,形成循环队列,当数组尾满的时候,要判断数组头是否为空,不为空继续存放数据。
判断循环队列中的存储情况
front == tail时队列为空
(tail + 1) % capacity == front表示队列已满
浪费了一个空间,tail没有放数据
优点
- 可以有效的利用资源
缺点
- 由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,造成队空或队满时头尾指针均相等。无法通过front==rear来判断队列是空还是满