Sobes.tech
Junior

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

sobes.tech AI

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

Οι δομές δεδομένων χωρίζονται σε δύο βασικές κατηγορίες:

  1. Γραμμικές: Τα στοιχεία είναι διατεταγμένα διαδοχικά.

    • Πίνακας (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(); // Αφαιρεί και επιστρέφει το στοιχείο από την αρχή
      
  2. Μη γραμμικές: Τα στοιχεία δεν είναι διατεταγμένα διαδοχικά.

    • Δέντρο (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); // Το διπλό δεν θα προστεθεί