Sobes.tech
Junior

Ποιες δομές δεδομένων υπάρχουν;

sobes.tech AI

Απάντηση από AI

Πίνακες, λίστες, στοίβες, ουρές, δέντρα, γράφοι, πίνακες κατακερματισμού.

Πίνακας: Συλλογή στοιχείων του ίδιου τύπου, αποθηκευμένα σε γειτονικές θέσεις μνήμης. Πρόσβαση μέσω δείκτη.

Λίστα: Διαδοχική συλλογή στοιχείων. Μπορεί να είναι απλή ή διπλά συνδεδεμένη. Η προσθήκη/διαγραφή στο μέσο είναι πιο αποδοτική από ό,τι σε πίνακα.

Στοίβα: Δομή LIFO (Last-In, First-Out). Ενέργειες: push (προσθήκη), pop (αφαίρεση από το τέλος), peek (προβολή ανώτερου στοιχείου).

Ουρά: Δομή FIFO (First-In, First-Out). Ενέργειες: enqueue (προσθήκη στο τέλος), dequeue (αφαίρεση από την αρχή), peek (προβολή πρώτου στοιχείου).

Δέντρο: Ιεραρχική δομή δεδομένων. Ρίζα, κόμβοι, απόγονοι. Παράδειγμα: δυαδικό δέντρο αναζήτησης.

Γράφος: Σύνολο κορυφών (κόμβων), συνδεδεμένων με ακμές. Μπορεί να είναι προσανατολισμένος ή μη, weighted ή μη.

Πίνακας κατακερματισμού: Συλλογή ζευγών κλειδιού-τιμής. Χρησιμοποιεί συνάρτηση κατακερματισμού για γρήγορη πρόσβαση (μέσος όρος). Μπορούν να προκύψουν συγκρούσεις.

Παραδείγματα χρήσης σε iOS:

  • Πίνακες: Array
  • Λίστες: δεν υπάρχει ενσωματωμένη κλάση, υλοποιούνται με πίνακες ή προσαρμοσμένες δομές
  • Στοίβες/Ουρές: υλοποιούνται με πίνακες ή λίστες
  • Δέντρα: χρησιμοποιούνται σε frameworks, π.χ., στο UI (ιεραρχία προβολών)
  • Γράφοι: για αναπαράσταση συνδέσεων, π.χ., δικτύων
  • Πίνακες κατακερματισμού: Dictionary, Set
// Παράδειγμα πίνακα
let numbers = [1, 2, 3, 4, 5]
print(numbers[0]) // Πρόσβαση μέσω δείκτη

// Παράδειγμα λεξικού (πίνακας κατακερματισμού)
let grades = ["Alice": 95, "Bob": 88]
print(grades["Alice"] ?? 0) // Πρόσβαση μέσω κλειδιού