Intern
Τι είναι οι στοίβες;
sobes.tech AI
Απάντηση από AI
Η στοίβα είναι μια δομή δεδομένων που λειτουργεί σύμφωνα με την αρχή LIFO (Last-In, First-Out). Τα στοιχεία προστίθενται και αφαιρούνται μόνο από ένα άκρο, που ονομάζεται κορυφή της στοίβας.
Βασικές λειτουργίες:
push: προσθέτει ένα στοιχείο στην κορυφή της στοίβας.pop: αφαιρεί ένα στοιχείο από την κορυφή της στοίβας και το επιστρέφει.peek: λαμβάνει την τιμή του στοιχείου στην κορυφή της στοίβας χωρίς να το αφαιρεί.isEmpty: ελέγχει αν η στοίβα είναι άδεια.
Στη Java, η στοίβα αντιπροσωπεύεται από την κλάση Stack, η οποία είναι υποκλάση της Vector.
// Παράδειγμα χρήσης της Stack
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Πρώτο"); // Προσθήκη στοιχείων
stack.push("Δεύτερο");
stack.push("Τρίτο");
System.out.println("Κορυφή της στοίβας: " + stack.peek()); // Προβολή του ανώτερου στοιχείου
while (!stack.empty()) { // Όσο η στοίβα δεν είναι άδεια
System.out.println("Αφαίρεση: " + stack.pop()); // Αφαίρεση στοιχείων
}
}
}
Μια εναλλακτική και πιο συστηνόμενη προσέγγιση στη σύγχρονη ανάπτυξη Java είναι η χρήση του ArrayDeque ως στοίβα, καθώς προσφέρει καλύτερη απόδοση.
// Παράδειγμα χρήσης του ArrayDeque ως στοίβα
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeStackExample {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>(); // Χρήση του Deque ως στοίβα
stack.push("Πρώτο"); // Προσθήκη στοιχείων
stack.push("Δεύτερο");
stack.push("Τρίτο");
System.out.println("Κορυφή της στοίβας: " + stack.peek()); // Προβολή του ανώτερου στοιχείου
while (!stack.isEmpty()) { // Όσο η στοίβα δεν είναι άδεια
System.out.println("Αφαίρεση: " + stack.pop()); // Αφαίρεση στοιχείων
}
}
}
Εφαρμογές των στοίβων:
- Υπολογισμός αριθμητικών εκφράσεων (π.χ., σε αντίστροφη πολωνική σημειογραφία).
- Αναίρεση/επανάληψη λειτουργιών σε επεξεργαστές κειμένου (Ctrl+Z/Ctrl+Y).
- Διαχείριση κλήσεων συναρτήσεων στο λειτουργικό σύστημα.
- Αναδρομικοί αλγόριθμοι.
- Διάσχιση γραφημάτων και δέντρων (αναζήτηση βάθους).