关于扩容的问题

来源:3-7 循环队列的实现

无心铁憨憨

2018-11-24

有个问题没有想明白,扩容的前提是 (tail+1)%data.length == front
有这么一种情况,创建一个循环队列,传入容量是5,实际长度是6,在队列都是满的情况下,如果这个时候front的在位置索引1的情况下,再添加元素的时候, (tail+1)%data.length == front这个公式是成立的,就进行扩容,那如果队首的位置在0,队尾的位置在4,这个时候再添加元素,也是应该进行扩容的,因为我们始终是要浪费一个空间,但是这个时候公式是不成立的

写回答

1回答

liuyubobobo

2018-11-24

永远不会容量是5,队首是0,队尾是4的情况。


因为在队首是0,对尾是3的时候,添加下一个元素入队,就已经扩容了。之后,容量为10,队首是0,队尾是4:)

0
5
无心铁憨憨
回复
liuyubobobo
恩恩,我已经明白了,谢谢老师的耐心解答,辛苦了
2018-11-27
共5条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程