Структура данных — это «контейнер», который используется для хранения и организации данных по определенным правилам. Это способ упорядочивания данных на компьютере таким образом, чтобы к ним можно было эффективно получать доступ и вносить изменения.
В зависимости от требований и проекта важно выбрать оптимальную структуру данных. Например, если вы хотите хранить данные последовательно в памяти, то можно воспользоваться Массивом.
Примечание: Структура данных и типы данных немного различаются. Структура данных — это набор типов данных, упорядоченных в определенном порядке.
Типы структур данных
В основном, структуры данных делятся на два типа:
Линейные структуры данных.
Нелинейные структуры данных.
Линейные структуры данных
В линейных структурах данных элементы располагаются последовательно друг за другом. Поскольку элементы упорядочены в определенном порядке, данную структуру относительно легко создать и поддерживать. Однако с увеличением сложности программы линейные структуры данных уже могут быть не лучшим вариантом из-за операционных сложностей.
Рассмотрим наиболее популярные линейные структуры данных.
Структура данных Массив
В массиве элементы в памяти располагаются в непрерывной последовательности. Все элементы массива имеют одинаковый тип. Тип элементов, которые можно хранить в виде массивов, определяется языком программирования.
Массив, где каждый элемент представлен индексом
Структура данных Стек
В стеке элементы хранятся по принципу LIFO (сокр. от англ. «Last In, First Out»). Это означает, что последний элемент, добавленный в стек, удаляется первым.
Структура данных Очередь
В отличие от стека, очередь работает по принципу FIFO (сокр. от англ. «First In, First Out»), где первый элемент, помещенный в очередь, первым и удаляется.
Структура данных Связный список
В связном списке данные связаны через серию узлов. Каждый узел содержит элементы данных и адрес следующего узла. Посредством адреса и осуществляется «связывание».
Связный список
Нелинейные структуры данных
В отличие от линейных структур данных, элементы в нелинейных структурах данных не расположены в какой-либо последовательности. Вместо этого они организованы иерархически, где один элемент связан с другим или сразу несколькими другими элементами.
Нелинейные структуры данных делятся на графовые и древовидные структуры данных.
Структура данных Граф
В графе каждый узел называется вершиной, а каждая вершина соединена с другими вершинами через ребра.
Пример структуры данных Граф
Древовидные структуры данных
Подобно графу, дерево также представляет собой набор вершин и ребер. Однако в древовидной структуре данных между двумя вершинами может быть только одно ребро.
Пример древовидной структуры данных
Популярные древовидные структуры данных:
Бинарное дерево (Binary Tree)
Двоичное дерево поиска (Binary Search Tree)
АВЛ-дерево (AVL Tree)
B-дерево (B-Tree)
B+ дерево (B+ Tree)
Красно-черное дерево (Red-Black Tree)
Различия между линейными и нелинейными структурами данных
Линейные структуры данных | Нелинейные структуры данных |
Элементы данных расположены в последовательном порядке, один за другим. | Элементы данных расположены в иерархическом (непоследовательном) порядке. |
Все элементы находятся на одном уровне. | Элементы данных находятся на разных уровнях. |
Всю цепочку элементов можно последовательно пройти за один проход. | Всю цепочку данных нельзя пройти за один проход. Требуется несколько проходов. |
Память используется неэффективно. | Память используется более эффективно. |
Время доступа к элементам резко увеличивается с увеличением количества элементов. | Время доступа к элементам зачастую не так резко увеличивается с увеличением количества элементов. |
Примеры: Массив, Стек, Очередь. | Примеры: Деревья, Графы, Карты. |
Зачем изучать структуры данных?
Знание и понимание структур данных поможет вам выбрать правильные структуры данных в своих проектах. Таким образом вы сможете писать более эффективный код, с точки зрения памяти и времени.