Junior
Ποιες δομές δεδομένων υπάρχουν;
sobes.tech AI
Απάντηση από AI
Οι δομές δεδομένων χωρίζονται σε δύο βασικές κατηγορίες:
-
Γραμμικές: Τα στοιχεία είναι διατεταγμένα διαδοχικά.
- Πίνακας (Array): Σταθερού μεγέθους, άμεση πρόσβαση μέσω δείκτη.
int[] numbers = { 1, 2, 3, 4, 5 }; // Παράδειγμα δήλωσης - Λίστα (List): Δυναμικού μεγέθους, τα στοιχεία προστίθενται και διαγράφονται.
System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>(); names.Add("Alice"); names.Add("Bob"); - Εν linked λίστα (Linked List): Τα στοιχεία (κόμβοι) περιέχουν αναφορά στον επόμενο (και πιθανώς στον προηγούμενο).
- Μονόδρομη
- Διπλόδρομη
System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>(); letters.AddLast('A'); letters.AddLast('B'); - Στοίβα (Stack): Τελευταίο εισήλθε, πρώτο εξέλθε (LIFO).
System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>(); stack.Push(10); // Προσθέτει στοιχείο στην κορυφή int item = stack.Pop(); // Αφαιρεί και επιστρέφει το στοιχείο στην κορυφή - Ουρά (Queue): Πρώτο εισήλθε, πρώτο εξέλθε (FIFO).
System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>(); queue.Enqueue("Task 1"); // Προσθέτει στοιχείο στο τέλος string task = queue.Dequeue(); // Αφαιρεί και επιστρέφει το στοιχείο από την αρχή
- Πίνακας (Array): Σταθερού μεγέθους, άμεση πρόσβαση μέσω δείκτη.
-
Μη γραμμικές: Τα στοιχεία δεν είναι διατεταγμένα διαδοχικά.
- Δέντρο (Tree): Ιεραρχική δομή με ρίζα και απογόνους.
- Δυαδικό δέντρο
- B-δέντρο
- Κόκκινο-μαύρο δέντρο
- AVL δέντρο
- Γράφος (Graph): Σύνολο κορυφών (κόμβων) και ακμών (συνδέσεων) μεταξύ τους.
- Κατευθυνόμενο (Directed)
- Μη κατευθυνόμενο (Undirected)
- Πίνακας κατακερματισμού (Hash Table) / Λεξικό (Dictionary): Αποθηκεύουν ζεύγη κλειδιού-τιμής, χρησιμοποιώντας μια συνάρτηση κατακερματισμού για ταχεία αναζήτηση.
System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>(); ageByName.Add("Charlie", 30); int age = ageByName["Charlie"]; // Γρήγορη πρόσβαση μέσω κλειδιού - Σετ (Set): Συλλογή μοναδικών στοιχείων χωρίς συγκεκριμένη σειρά.
System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>(); uniqueNumbers.Add(5); uniqueNumbers.Add(10); uniqueNumbers.Add(5); // Το διπλό δεν θα προστεθεί
- Δέντρο (Tree): Ιεραρχική δομή με ρίζα και απογόνους.