我有一个用圆形数组实现的双端队列,这样'front'指针指向前面元素,'rear'指针指向最后一个元素后面的一个元素。起初它们都设置为索引0。
Normal:
[X][X][ ][ ][ ]
F R
Example:
1. [ ][ ][ ][ ][ ]
FR
2. AddFirst 1 times
[ ][ ][ ][ ][X]
R F
3. Add 4 more times such that it's full
[X][X][X][X][X]
FR
4. RemoveFirst
[ ][X][X][X][X]
R F
正如你所看到的一切正常,但我认为有办法打破它。我这样说是因为如果我实现F和R指向第一个和最后一个元素,那么我上面做的就会破坏它,即R指向null,这不是真的。所以我想知道它是否会在这个实现中发生。
假设:我已经实现了检查以防止在满时添加或在空时删除,在容量为零时添加和删除,以及添加在我的实现中不允许的空元素。