Question : Comment utiliser deux piles pour implémenter une file d'attente, c'est-à-dire deux méthodes pour implémenter un queue-appendTail (insertion) et deleteHead (suppression).
Analyse : L'idée principale est qu'une pile stocke en avant et l'autre pile stocke en arrière. La pile de stockage avant est utilisée pour l'insertion et la pile de stockage inverse est utilisée pour la suppression.
Le code Java implémenté est le suivant :
Copiez le code comme suit :
importer java.util.Stack ;
classe publique QueneWithTwoStacks<E> {
pile privée<E> pile1 ;
pile privée<E> stack2 ;
public void appendTail(E e) {
stack1.push(e);
}
public E deleteHead() lève une exception {
si (stack2.size() <= 0) {
tandis que (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
si (stack2.size() == 0) {
throw new Exception("La file d'attente est vide!");
}
return stack2.pop();
}
}