Intern
Ποιες δομές δεδομένων υπάρχουν;
sobes.tech AI
Απάντηση από AI
Υπάρχουν οι ακόλουθες βασικές δομές δεδομένων:
Απλές (Primitive):
- Ακέραιοι αριθμοί (Integer)
- Αριθμοί κινητής υποδιαστολής (Floating-point numbers)
- Αληθής/Ψευδής τιμές (Boolean)
- Χαρακτήρες (Character)
Αφηρημένες (Abstract):
- Πίνακας (Array): Ταξινομημένη συλλογή στοιχείων ενός τύπου, πρόσβαση μέσω δείκτη με σταθερό χρόνο.
- Συνδεδεμένη λίστα (Linked List): Συλλογή κόμβων, καθένας από τους οποίους περιέχει δεδομένα και αναφορά στον επόμενο κόμβο. Αποτελεσματική προσθήκη/διαγραφή στην αρχή/τέλος, πρόσβαση μέσω δείκτη - $O(n)$.
- Μονόδρομη (Singly Linked List)
- Διπλόδρομη (Doubly Linked List)
- Κυκλική (Circular Linked List)
- Στοίβα (Stack): Δομή δεδομένων LIFO (Last-In, First-Out). Ενέργειες: push (προσθήκη), pop (διαγραφή), peek (προβολή κορυφαίου στοιχείου).
struct Stack<Element> { private var elements: [Element] = [] mutating func push(_ element: Element) { elements.append(element) } mutating func pop() -> Element? { return elements.popLast() } func peek() -> Element? { return elements.last } var isEmpty: Bool { return elements.isEmpty } } - Ουρά (Queue): Δομή δεδομένων FIFO (First-In, First-Out). Ενέργειες: enqueue (προσθήκη), dequeue (διαγραφή), peek (προβολή πρώτου στοιχείου).
struct Queue<Element> { private var elements: [Element] = [] mutating func enqueue(_ element: Element) { elements.append(element) } mutating func dequeue() -> Element? { guard !elements.isEmpty else { return nil } return elements.removeFirst() } func peek() -> Element? { return elements.first } var isEmpty: Bool { return elements.isEmpty } } - Χασ-πίνακας (Hash Table) / Λεξικό (Dictionary) / Συλλογικός Πίνακας (Associative Array): Συλλογή ζευγών "κλειδί-τιμή", που επιτρέπει αποτελεσματική αναζήτηση, προσθήκη και διαγραφή με βάση το κλειδί, χρησιμοποιώντας συνάρτηση κατακερματισμού.
var dictionary = [String: Any]() // Παράδειγμα λεξικού σε Swift dictionary["key1"] = "value1" let value = dictionary["key1"] - Σετ (Set): Μη ταξινομημένη συλλογή μοναδικών στοιχείων. Υποστηρίζει ενέργειες: προσθήκη, διαγραφή, έλεγχο ύπαρξης, ένωση, τομή, διαφορά.
var set: Set<Int> = [1, 2, 3] // Παράδειγμα σετ σε Swift set.insert(4) let containsTwo = set.contains(2) - Δέντρο (Tree): Ιεραρχική δομή δεδομένων, που αποτελείται από κόμβους συνδεδεμένους με ακμές. Έχει ριζικό κόμβο και θυγατρικούς κόμβους.
- Δυαδικό δέντρο (Binary Tree)
- Δυαδικό δέντρο αναζήτησης (Binary Search Tree - BST)
- Ισορροπημένο δυαδικό δέντρο (Balanced Binary Tree) - AVL, κόκκινο-μαύρο δέντρο.
- Δέντρο B (B-Tree)
- Γράφος (Graph): Σύνολο κορυφών (κόμβων) και ακμών (συνδέσεων), που συνδέουν τις κορυφές. Μπορεί να είναι προσανατολισμένος ή μη, με βάρη ή χωρίς.
Η κατανόηση αυτών των δομών δεδομένων είναι κρίσιμη για την αποτελεσματική και κλιμακούμενη γραφή κώδικα. Η επιλογή της κατάλληλης δομής δεδομένων εξαρτάται από τις απαιτήσεις απόδοσης των λειτουργιών (αναζήτηση, εισαγωγή, διαγραφή) και το χαρακτήρα των δεδομένων.