教程上的编码是:
class Queue {
int integerQueue[];
int tail;
int size;
public void IntegerQueue(int size) {
integerQueue = new int[size];
this.size = size;
tail = 0;
}
public void inQueue(int i) {
if (tail < size) {
this.integerQueue[tail] = i;
tail++;
} else {
System.err.println("溢出啦!");
}
}
public int outQueue() {
if (tail >= 0) {
int tmp = this.integerQueue[0];
tail--;
return tmp;
} else {
System.err.println("队列为空!");
throw new RuntimeException();
}
}
}
但是我想问一下,队列不是先进先出吗,那上边出队写法正确吗:integerQueue[0]出队以后,后边的不都要向前移吗?搞不懂是教程错了,还是走自己错了,求大神指点迷津
如果队列长度为5
假如现在队列成员为:
1 2 3 4 5 则tail=5 size=5
6进队,则应该变成
2 3 4 5 6
而实际还是
1 2 3 4 5 会报告溢出,6会进不来
假如现在队列成员为:
1 2 3 4 5 则tail=5 size=5
出队,则实际变成
null 2 3 4 5 tail=4
再出队,还是
null 2 3 4 5 tail=3
而正确应该为 null null 3 4 5
你的想法是这样,但是代码里面实现的不是这样