一、普通队列(顺序存储结构)
说明: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
彭乐祥
阅读(
25)
评论()
编辑
收藏
举报