Intern
Mi az a verem?
sobes.tech MI
Válasz az MI-től
A verem egy olyan adatszerkezet, amely a LIFO (Last-In, First-Out) elv szerint működik. Az elemek csak egy végén, a verem csúcsánál adhatók hozzá vagy vehetők ki.
Fő műveletek:
push: egy elem hozzáadása a verem tetejére.pop: egy elem eltávolítása a verem tetejéről és visszaadása.peek: az elem értékének lekérdezése a verem tetején anélkül, hogy eltávolítanánk.isEmpty: ellenőrzi, hogy a verem üres-e.
Java-ban a verem a Stack osztállyal van reprezentálva, amely a Vector alosztálya.
// Stack használatának példája
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Első"); // Elemszám hozzáadása
stack.push("Második");
stack.push("Harmadik");
System.out.println("Verem teteje: " + stack.peek()); // A felső elem megtekintése
while (!stack.empty()) { // Amíg a verem nem üres
System.out.println("Eltávolítjuk: " + stack.pop()); // Elemszám eltávolítása
}
}
}
A modern Java fejlesztésekben ajánlott és jobb teljesítményt nyújtó alternatíva a ArrayDeque használata veremként, mivel ez hatékonyabb.
// ArrayDeque veremként való használatának példája
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeStackExample {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>(); // Deque veremként
stack.push("Első"); // Elemszám hozzáadása
stack.push("Második");
stack.push("Harmadik");
System.out.println("Verem teteje: " + stack.peek()); // A felső elem megtekintése
while (!stack.isEmpty()) { // Amíg a verem nem üres
System.out.println("Eltávolítjuk: " + stack.pop()); // Elemszám eltávolítása
}
}
}
A verem alkalmazásai:
- Matematikai kifejezések számítása (pl. fordított lengyel notációban).
- Műveletek visszavonása/ismétlése szövegszerkesztőkben (Ctrl+Z/Ctrl+Y).
- Függvényhívások kezelése az operációs rendszerben.
- Rekurzív algoritmusok.
- gráfok és fák bejárása (mélységi keresés).