Sobes.tech
Junior
147
questionbank

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

Answer from AI

sobes.tech AI

Существуют линейные и нелинейные структуры данных.

Линейные структуры данных:

  • Массивы (Arrays)
  • Списки (Lists)
    • Односвязные списки (Singly Linked Lists)
    • Двусвязные списки (Doubly Linked Lists)
    • Кольцевые списки (Circular Linked Lists)
  • Стеки (Stacks)
  • Очереди (Queues)

Нелинейные структуры данных:

  • Деревья (Trees)
    • Двоичные деревья (Binary Trees)
    • Сбалансированные деревья (Balanced Trees, например, AVL, красно-черные деревья)
    • B-деревья (B-Trees)
  • Графы (Graphs)
  • Хеш-таблицы (Hash Tables)
  • Множества (Sets)

В C# стандартная библиотека (System.Collections и System.Collections.Generic) предоставляет реализации многих из этих структур:

  • Array
  • List<T> (динамический массив, аналог ArrayList)
  • LinkedList<T> (двусвязный список)
  • Stack<T>
  • Queue<T>
  • HashSet<T>
  • Dictionary<TKey, TValue> (хеш-таблица)
  • SortedList<TKey, TValue>
  • SortedDictionary<TKey, TValue>
  • Существуют также более специализированные структуры, например, в пространствах имен System.Collections.Immutable или System.Collections.Concurrent.

Пример использования списка в C#:

// Использование List<T>
List<int> numbers = new List<int>();
numbers.Add(1); // Добавление элемента
numbers.Add(2);
int first = numbers[0]; // Доступ по индексу
numbers.RemoveAt(0); // Удаление по индексу

Пример использования словаря (хеш-таблицы) в C#:

// Использование Dictionary<TKey, TValue>
Dictionary<string, int> ageByName = new Dictionary<string, int>();
ageByName.Add("Alice", 30); // Добавление пары ключ-значение
ageByName["Bob"] = 25; // Добавление или обновление
bool exists = ageByName.ContainsKey("Alice"); // Проверка наличия ключа
int age = ageByName["Alice"]; // Доступ по ключу
ageByName.Remove("Bob"); // Удаление по ключу