Структуры данных в C#

Структуры данных представляют собой способы организации и хранения данных для эффективной обработки и управления ими. В C# реализовано множество структур данных, каждая из которых подходит для определённых задач.

Основные структуры данных

Массивы

Массивы (Arrays) представляют собой упорядоченные коллекции элементов фиксированного размера, доступ к которым осуществляется по индексу.

int[] numbers = new int[5] {1, 2, 3, 4, 5};
Console.WriteLine(numbers[2]); // Выведет 3

Списки

Списки (List) – это динамические коллекции, позволяющие изменять количество элементов во время выполнения программы.

List<int> list = new List<int> {1, 2, 3};
list.Add(4);
Console.WriteLine(list.Count);

Связные списки

LinkedList представляет собой набор узлов, где каждый элемент ссылается на следующий и/или предыдущий.

LinkedList<int> linkedList = new LinkedList<int>();
linkedList.AddLast(1);
linkedList.AddLast(2);
Console.WriteLine(linkedList.First.Value);

Стек

Стек (Stack) работает по принципу LIFO (Last In, First Out).

Stack<int> stack = new Stack<int>();
stack.Push(10);
stack.Push(20);
Console.WriteLine(stack.Pop()); // Выведет 20

Очередь

Очередь (Queue) организована по принципу FIFO (First In, First Out).

Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
Console.WriteLine(queue.Dequeue()); // Выведет 1

Словари

Словари (Dictionary<TKey, TValue>) представляют собой ассоциативные массивы (хеш-таблицы).

Dictionary<string, int> dict = new Dictionary<string, int>();
dict["one"] = 1;
dict["two"] = 2;
Console.WriteLine(dict["one"]); // Выведет 1

Хеш-таблицы

Hashtable – структура данных, основанная на принципе хеширования, аналогична Dictionary, но допускает использование разных типов данных в ключах и значениях.

Hashtable hashtable = new Hashtable();
hashtable["key"] = "value";
Console.WriteLine(hashtable["key"]); // Выведет value

Деревья

Деревья (Tree) представляют собой иерархическую структуру данных, где каждый узел может иметь несколько дочерних элементов.

class Node 
{
    public int Value;
    public Node Left, Right;
    public Node(int value) { Value = value; }
}

Графы

Граф (Graph) – это структура, состоящая из вершин и рёбер, соединяющих их. Используется в задачах маршрутизации и анализа связности данных.

class Graph 
{
    private Dictionary<int, List<int>> adjacencyList = new Dictionary<int, List<int>>();
    public void AddEdge(int v1, int v2) {
        if (!adjacencyList.ContainsKey(v1)) adjacencyList[v1] = new List<int>();
        adjacencyList[v1].Add(v2);
    }
}

Выбор структуры данных зависит от задачи и требований к производительности. Эффективное использование структур данных позволяет значительно ускорить выполнение программ и снизить потребление ресурсов.