Sobes.tech
Junior
159
questionbank

Какие существуют структуры данных?

Answer from AI

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