Junior — Middle
Πώς μπορούμε να κατασκευάσουμε μια δομή δεδομένων στοίβα χρησιμοποιώντας μια συνδεδεμένη λίστα;
sobes.tech AI
Απάντηση από AI
Η στοίβα μπορεί να υλοποιηθεί με βάση μια συνδεδεμένη λίστα, όπου κάθε στοιχείο (κόμβος) περιέχει δεδομένα και μια αναφορά στο επόμενο στοιχείο. Το ανώτερο στοιχείο της στοίβας είναι η κεφαλή της λίστας. Βασικές λειτουργίες:
- push — προσθέστε έναν νέο κόμβο στην αρχή της λίστας;
- pop — διαγράψτε τον κόμβο στην αρχή της λίστας και επιστρέψτε την τιμή του;
- peek — δείτε την τιμή της κεφαλής χωρίς να την διαγράψετε.
Παράδειγμα σε Kotlin:
class Node<T>(val data: T, var next: Node<T>? = null)
class Stack<T> {
private var head: Node<T>? = null
fun push(value: T) {
val newNode = Node(value, head)
head = newNode
}
fun pop(): T? {
val value = head?.data
head = head?.next
return value
}
fun peek(): T? = head?.data
fun isEmpty() = head == null
}
Αυτή η προσέγγιση διασφαλίζει λειτουργίες στοίβας σε χρόνο O(1) και δυναμική επέκταση χωρίς την ανάγκη για μεγάλη κατανομή πίνακα.