Intern
Kas ir steki?
sobes.tech AI
Atbilde no AI
Stāvs ir datu struktūra, kas darbojas pēc LIFO (Last-In, First-Out) principa. Elementi tiek pievienoti un noņemti tikai no viena gala, kas saucās stāva virsma.
Galvenās operācijas:
push: pievienot elementu stāva virsmai.pop: noņemt elementu no stāva virsmas un atgriezt to.peek: iegūt elementa vērtību stāva virsā bez noņemšanas.isEmpty: pārbaudīt, vai stāvs ir tukšs.
Java stāvs ir pārstāvēts ar Stack klasi, kas ir Vector apakšklaase:
// Piemērs, kā izmantot Stack
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Pirmais"); // Pievienot elementus
stack.push("Otrais");
stack.push("Trešais");
System.out.println("Stāva virsma: " + stack.peek()); // Skatīt augšējo elementu
while (!stack.empty()) { // Kamēr stāvs nav tukšs
System.out.println("Izņemam: " + stack.pop()); // Izņemt elementus
}
}
}
Alternatīvi un mūsdienu Java programmēšanā ieteicams izmantot ArrayDeque kā stāvu, jo tas nodrošina labāku veiktspēju:
// Piemērs, kā izmantot ArrayDeque kā stāvu
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeStackExample {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>(); // Izmantojam Deque kā stāvu
stack.push("Pirmais"); // Pievienot elementus
stack.push("Otrais");
stack.push("Trešais");
System.out.println("Stāva virsma: " + stack.peek()); // Skatīt augšējo elementu
while (!stack.isEmpty()) { // Kamēr stāvs nav tukšs
System.out.println("Izņemam: " + stack.pop()); // Izņemt elementus
}
}
}
Stāvu pielietojumi:
- Aprēķinu izteiksmju vērtēšana (piemēram, atpakaļējā poliskā notācija).
- Atcelšana/atkārtošana redaktoros (Ctrl+Z/Ctrl+Y).
- Funkciju izsaukumu pārvaldība operētājsistēmā.
- Rekursīvi algoritmi.
- Grafu un koku apmeklējumi (dziļuma meklēšana).