Intern
Wat zijn stacks?
sobes.tech AI
Antwoord van AI
Een stack is een gegevensstructuur die volgens het LIFO-principe (Last-In, First-Out) werkt. Elementen worden alleen aan één uiteinde toegevoegd en verwijderd, dat wordt de top van de stack genoemd.
Belangrijkste operaties:
push: een element aan de top van de stack toevoegen.pop: een element van de top van de stack verwijderen en teruggeven.peek: de waarde van het element aan de top van de stack bekijken zonder het te verwijderen.isEmpty: controleren of de stack leeg is.
In Java wordt de stack voorgesteld door de klasse Stack, die een subklasse is van Vector.
// Voorbeeld van gebruik van Stack
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Eerste"); // Elementen toevoegen
stack.push("Tweede");
stack.push("Derde");
System.out.println("Top van de stack: " + stack.peek()); // Bekijk het bovenste element
while (!stack.empty()) { // Zolang de stack niet leeg is
System.out.println("Verwijderen: " + stack.pop()); // Elementen verwijderen
}
}
}
Een alternatief en meer aanbevolen aanpak in moderne Java-ontwikkelingen is het gebruik van ArrayDeque als stack, omdat het betere prestaties biedt.
// Voorbeeld van gebruik van ArrayDeque als stack
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeStackExample {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>(); // Gebruik Deque als stack
stack.push("Eerste"); // Elementen toevoegen
stack.push("Tweede");
stack.push("Derde");
System.out.println("Top van de stack: " + stack.peek()); // Bekijk het bovenste element
while (!stack.isEmpty()) { // Zolang de stack niet leeg is
System.out.println("Verwijderen: " + stack.pop()); // Elementen verwijderen
}
}
}
Toepassingen van stacks:
- Berekening van aritmetische uitdrukkingen (bijvoorbeeld in omgekeerde Pool Notatie).
- Ongedaan maken/herhalen van operaties in tekstverwerkers (Ctrl+Z/Ctrl+Y).
- Beheer van functie-aanroepen in het besturingssysteem.
- Recursieve algoritmen.
- Doorlopen van grafen en bomen (diepte-eerst zoeken).