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 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); // Дубликат няма да бъде добавен