循环队列

一、普通队列(顺序存储结构)

说明:rear指向队尾元素,front指向对头元素的下一个元素。

i.判断元素个数:number=rear-front;
ii.判断队空:rear==front
iii.插入元素:rear++;
iiii.删除元素:front++;
iiiii.队满操作:rear==length-1;

2.2 遇到假溢出问题

如严蔚敏老师数据结构书中,写道,每次插入与删除操作会使其头尾指针向后移动,由于使用的是顺序存储结构,空间是有限的,就会导致数组越界问题——在队未满时,却不能插入操作。

二. 循环队列

如何解决呢?

通过取模操作使原本越界访问问题拨乱反正。
i.判断元素个数:
ii.插入元素:rear=(rear+1)%length;
iii.删除元素:front=(front+1)%length;
iiii.元素个数:(rear-front+length)%length;
iiiii.判断队空:rear==front;

此时就会出现另外一个问题,如插入操作比删除操作更快时,队尾就会重现回到队头,那就和判空条件重合了,因此人为规定,循环队列中只存储length-1结点。

iiiiii. 队满:(rear+1)%length==front;
posted @ 2023-11-15 21:05  彭乐祥  阅读(19)  评论(0编辑  收藏  举报