在 Schildt 的书中有这个片段(最后一段):
请注意,队列大小比参数指定的大小大一
size。
为什么队列大小大于参数size(我们从哪里得到的),为什么数组的一个元素没有使用?如果我们有一个队列大小大于 的大小size,而书上说数组的大小应该大于队列的大小,那么为什么数组的大小用 表示size,这有什么矛盾呢?
完整代码:
class Queue{
char q[];
int putloc, getloc;
Queue(int size){
q=new char[size];
putloc=getloc=0;
}
void put(char ch){
if(putloc==q.length){
System.out.println("-Очередь заполнена");
return;
}
q[putloc++]=ch;
}
char get(){
if (getloc==putloc){
System.out.println("-Очередь пуста");
return (char) 0;
}
return q[getloc++];
}
}
public class Main {
public static void main(String[] args)
throws java.io.IOException {
Queue bigQ = new Queue(25);
Queue smallQ = new Queue(4);
char ch;
int i;
System.out.println("Использование очереди bigQ для хранения алфавита");
for (i = 0; i < 26; i++)
bigQ.put((char) ('A' + i));
System.out.print("Содержимое очереди bigQ: ");
for (i = 0; i < 26; i++) {
ch = bigQ.get();
if (ch != (char) 0)
System.out.print(ch);
}
System.out.println("\n");
System.out.println("Использование очереди smallQ для генерации ошибок");
for (i = 0; i < 5; i++) {
System.out.print("Попытка сохранения " + (char) ('Z' - i));
smallQ.put((char) ('Z' - i));
System.out.println();
}
System.out.println();
System.out.print("Содержимое очереди smallQ: ");
for (i = 0; i < 5; i++) {
ch = smallQ.get();
if (ch != (char) 0)
System.out.print(ch);
}
}
}

这是不同出版物中的错字,似乎在互联网上您仍然可以找到一个实现
size+1她是这样的:
这里需要注意的是,在现代版本中,元素首先放入队列中,然后才增加索引
相当于写
在现代出版物中,他们只提到指数从零开始。