Я пытаюсь сделать простой код для стеков, используя две очереди.Я понимаю концепцию, и я попробовал следующий код для реализации этого.
import java.util.LinkedList;
import java.util.Queue;
public class StackWithQueues {
Queue<Integer> q1 = new LinkedList<Integer>();
Queue<Integer> q2 = new LinkedList<Integer>();
int size;
public StackWithQueues() {
this.size = 0;
}
public void push(int ele) {
q1.add(ele);
size++;
System.out.println("Pushed "+ele);
}
public void pop() {
while(!q1.isEmpty()) {
q2.add(q1.peek());
q2.poll();
}
int popped = q2.peek();
size--;
q1 = q2;
System.out.println("Popped "+popped);
}
public static void main(String[] args) {
StackWithQueues s = new StackWithQueues();
for(int i=0;i<5;i++)
s.push(i+1);
s.pop();
s.pop();
s.pop();
}
}
Я не могу понять, почему метод pop()
ничего не делает.Консоль показывает следующий вывод при исполнении.
Нажатие 1
Нажатие 2
Нажатие 3
Нажатие 4
Нажатие 5
Буду признателен, если кто-нибудь сможет объяснить, что происходит с методом pop
здесь.