Вопрос: Как использовать два стека для реализации очереди, то есть два метода для реализации очереди —appendTail (вставка) и deleteHead (удаление).
Анализ: Основная идея заключается в том, что один стек сохраняет данные вперед, а другой — назад. Стек прямого хранения используется для вставки, а стек обратного хранения используется для удаления.
Реализованный код Java выглядит следующим образом:
Скопируйте код кода следующим образом:
импортировать java.util.Stack;
общественный класс QueneWithTwoStacks<E> {
частный стек <E> stack1;
частный стек <E> stack2;
общественная недействительность appendTail (E e) {
stack1.push(е);
}
public E deleteHead() выдает исключение {
если (stack2.size() <= 0) {
в то время как (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
если (stack2.size() == 0) {
throw new Exception("Очередь пуста!");
}
вернуть stack2.pop();
}
}