Структуры данных представляют собой способы организации и хранения данных для эффективной обработки и управления ими. В 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);
}
}
Выбор структуры данных зависит от задачи и требований к производительности. Эффективное использование структур данных позволяет значительно ускорить выполнение программ и снизить потребление ресурсов.