Sobes.tech
Junior

Milyen adatstruktúrák léteznek?

sobes.tech MI

Válasz az MI-től

Az adatszerkezetek két fő kategóriába sorolhatók:

  1. Lineárisak: Az elemek egymás után helyezkednek el.

    • Tömb (Array): Fix méretű, közvetlen hozzáférés index alapján.
      int[] numbers = { 1, 2, 3, 4, 5 }; // Példa deklaráció
      
    • Lista (List): Dinamikus méretű, az elemek hozzáadása és törlése lehetséges.
      System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>();
      names.Add("Alice");
      names.Add("Bob");
      
    • Láncolt lista (Linked List): Az elemek (csomópontok) hivatkozást tartalmaznak a következőre (és esetleg az előzőre).
      • Egyszerű láncolt
      • Kétszeresen láncolt
      System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>();
      letters.AddLast('A');
      letters.AddLast('B');
      
    • Verem (Stack): Utolsóként be, elsőként ki (LIFO).
      System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>();
      stack.Push(10); // Elem hozzáadása a tetejére
      int item = stack.Pop(); // Elem eltávolítása és visszaadása
      
    • Sor (Queue): Elsőként be, elsőként ki (FIFO).
      System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>();
      queue.Enqueue("Feladat 1"); // Elem hozzáadása a végéhez
      string task = queue.Dequeue(); // Elem eltávolítása a kezdetről
      
  2. Nem lineárisak: Az elemek nem egymás után helyezkednek el.

    • Fa (Tree): Hierarchikus struktúra gyökércsomóponttal és leszármazottakkal.
      • Kétágu fa
      • B-fa
      • Piros-fekete fa
      • AVL fa
    • Graf (Graph): Csúcsok (csomópontok) és élek (kapcsolatok) halmaza.
      • Irányított (Directed)
      • Irányítatlan (Undirected)
    • Hash-tábla (Hash Table) / Szótár (Dictionary): Párokat tárol kulcs-érték formában, gyors keresést biztosítva hash függvény segítségével.
      System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>();
      ageByName.Add("Charlie", 30);
      int age = ageByName["Charlie"]; // Gyors hozzáférés kulcs alapján
      
    • Halmaz (Set): Egyedi elemek gyűjteménye, nem meghatározott sorrendben.
      System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>();
      uniqueNumbers.Add(5);
      uniqueNumbers.Add(10);
      uniqueNumbers.Add(5); // A duplikátum nem kerül hozzáadásra