Frage: Wie verwende ich zwei Stapel zum Implementieren einer Warteschlange, dh zwei Methoden zum Implementieren einer Warteschlange: appendTail (Einfügung) und deleteHead (Löschen).
Analyse: Die Kernidee besteht darin, dass ein Stapel vorwärts und der andere Stapel rückwärts speichert. Der Vorwärtsspeicherstapel wird zum Einfügen und der Rückwärtsspeicherstapel zum Löschen verwendet.
Der implementierte Java-Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
java.util.Stack importieren;
öffentliche Klasse QueneWithTwoStacks<E> {
privater Stack<E> stack1;
privater Stack<E> stack2;
public void appendTail(E e) {
stack1.push(e);
}
public E deleteHead() löst eine Ausnahme aus {
if (stack2.size() <= 0) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
if (stack2.size() == 0) {
throw new Exception("Warteschlange ist leer!");
}
return stack2.pop();
}
}