Я сделал код для очереди, используя два стека. Но часть кода в dequeue ведет себя странно, она правильно удаляет первый элемент в тесте, а второй и третий элементы имеют неправильный порядок.
Это код dequeue, я использую:
public T dequeue() throws NoSuchElementException {
while(!s1.isEmpty()){
T tmp = s1.pop();
s2.push(tmp);
}
Stack<T> temp = new Stack<>();
temp = s1;
s1 = s2;
s2 = temp;
return s1.pop();
}
Это код тестового примера, который дает обратный порядок для 51 и 86.
@Test
public void testTwoElement() {
Queue<Integer> q = new Queue<>();
q.enqueue(42);
q.enqueue(51);
q.enqueue(86);
assertEquals(3, q.size());
assertEquals(new Integer(42), q.dequeue());
assertEquals(new Integer(51), q.dequeue());
assertEquals(new Integer(86), q.dequeue());
assertEquals(0,q.size());
assertEquals(true,q.isEmpty());
}
Я не могу понять причину, почему это происходит так. Буду признателен, если кто-нибудь скажет мне, что не так с кодом.