老师,首先很感谢你让我把取余"%"这个运算符和圆环运算联系了起来!
对于循环队列中提到需要浪费一个空间的说法,我感到非常困惑。
学生认为不需要浪费一个空间也可以,反而浪费一个空间让我倍感不适,老师越是这么讲我越是不适()
遂回家修改了一下您的代码
07-Implementation-of-Loop-Queue 中的LoopQueue.java
链接描述
我把部分代码作出了修改
//我认为不需要浪费一个空间,也就是不需要为了可以被浪费一个空间,而多申请一个空间
public LoopQueue(int capacity){
// data = (E[])new Object[capacity + 1];
data = (E[])new Object[capacity];
front = 0;
tail = 0;
size = 0;
}
public int getCapacity(){
//return data.length - 1;
return data.length;
}
private void resize(int newCapacity){
//E[] newData = (E[])new Object[newCapacity + 1];
E[] newData = (E[])new Object[newCapacity];
for(int i = 0 ; i < size ; i ++)
newData[i] = data[(i + front) % data.length];
data = newData;
front = 0;
tail = size;
}
从运行结果上我发现似乎没什么差别,而且我看我们的时钟(他是一个圆环),他也不需要做浪费一个空间的特殊处理。
所以还是很希望老师能解答一下我的困惑,是不是我理解错了,我的修改是否会在某一时刻出现问题,老师请指出,非常感谢。