Ποιες δομές δεδομένων υπάρχουν;
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) // Πρόσβαση μέσω κλειδιού