В настоящее время у меня есть связанная очередь с тремя элементами в ней.
LinkedQueue<Integer> queue = new LinkedQueue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
На этом этапе queue.toString () дает мне:
<Front>
1
2
3
<Rear>
Я пытаюсь написать для l oop, который проходит через очередь, удаляет ее элементы и помещает эти элементы во временную очередь.
LinkedQueue<Integer> temp = new LinkedQueue();
for (int i = 0; i < queue.size(); i++) {
Integer int = queue.dequeue();
temp.enqueue(int);
}
queue.size () возвращает 3, что является правильным числом элементов в очереди, поэтому тело l oop должно выполняться три раза. Однако, когда я помещаю в свой оператор print для l oop, который проверяет элементы очереди и температуры на каждой итерации, остается только две итерации.
Temp:
<Front>
1
<Rear>
Queue:
<Front>
2
3
<Rear>
Temp:
<Front>
1
2
<Rear>
Queue:
<Front>
3
<Rear>
Я не уверен, почему он пропускает последнюю итерацию, что должно дать
Temp:
<Front>
1
2
3
<Rear>
Queue:
<Front>
<Rear>
Чтобы проверить, я изменил "i
LinkedQueue<Integer> temp = new LinkedQueue();
for (int i = 0; i < queue.size(); i++) {
Integer int = queue.dequeue();
temp.enqueue(int);
}
Integer int = queue.dequeue();
temp.enqueue(int);
, что заставило его работать.
TL; DR. Я абсолютно не знаю, почему my for l oop не выполняет правильное количество раз.