Sobes.tech
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) και δυναμική επέκταση χωρίς την ανάγκη για μεγάλη κατανομή πίνακα.