Sobes.tech
Junior

Jaké existují datové struktury?

sobes.tech AI

Odpověď od AI

Datové struktury se dělí do dvou hlavních kategorií:

  1. Lineární: Prvky jsou uspořádány sekvenčně.

    • Pole (Array): Fixní velikost, přímý přístup podle indexu.
      int[] numbers = { 1, 2, 3, 4, 5 }; // Příklad deklarace
      
    • Seznam (List): Dynamická velikost, prvky jsou přidávány a odstraňovány.
      System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>();
      names.Add("Alice");
      names.Add("Bob");
      
    • Související seznam (Linked List): Prvky (uzly) obsahují odkaz na následující (a možná předchozí) prvek.
      • Jednosměrný
      • Dvousměrný
      System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>();
      letters.AddLast('A');
      letters.AddLast('B');
      
    • Zásobník (Stack): Poslední přišel - první odešel (LIFO).
      System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>();
      stack.Push(10); // Přidá prvek na vrchol
      int item = stack.Pop(); // Odebere a vrátí prvek z vrcholu
      
    • Fronta (Queue): První přišel - první odešel (FIFO).
      System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>();
      queue.Enqueue("Task 1"); // Přidá prvek na konec
      string task = queue.Dequeue(); // Odebere a vrátí prvek z začátku
      
  2. Nelineární: Prvky nejsou uspořádány sekvenčně.

    • Strom (Tree): Hierarchická struktura s kořenovým uzlem a potomky.
      • Dvouprvkový strom
      • B-strom
      • Červeno-černé strom
      • AVL strom
    • Graf (Graph): Sada vrcholů (uzlů) a hran (vazeb) mezi nimi.
      • Směrovaný (Directed)
      • Nesměrovaný (Undirected)
    • Hash tabulka (Hash Table) / Slovník (Dictionary): Ukládají páry klíč-hodnota, používající hashovací funkci pro rychlé vyhledávání.
      System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>();
      ageByName.Add("Charlie", 30);
      int age = ageByName["Charlie"]; // Rychlý přístup podle klíče
      
    • Množina (Set): Kolekce unikátních prvků bez určeného pořadí.
      System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>();
      uniqueNumbers.Add(5);
      uniqueNumbers.Add(10);
      uniqueNumbers.Add(5); // Duplicita nebude přidána