Структура данных - это способ организации данных таким образом, чтобы конкретные запросы данных данных были запрошены и / или обновлены эффективно.

Структуры данных повсеместны в программном обеспечении. Хэш-таблицы, сбалансированные деревья и динамические массивы являются важными строительными блоками для больших сложных систем, и почти все программисты столкнулись с ними в какой-то момент. Более сложные структуры, такие как двоичные кучи, могут ускорить работу сложных систем, в то время как более простые понятия, такие как стеки и очереди, позволяют более элегантно и сжато кодировать алгоритмы.

Конечно, это только верхушка айсберга, когда он приходит к структурам данных. В последние годы теоретики развивают все лучшие и лучшие структуры данных, многие из которых широко используются в современном программном обеспечении, и многие из них полезны только с теоретической точки зрения.

Структуры данных тесно связаны с алгоритмами. Часто хороший выбор структуры данных может привести к заметному улучшению во время выполнения алгоритма. Например, алгоритм Дейкстры с наивной реализацией очереди приоритетов выполняется в квадратичное время, но с быстрой кучкой Фибоначчи можно показать, что она работает в O(m + n lg n).

Ниже приведена (не совсем полная) список некоторых из наиболее популярных структур данных и их вариантов:

Динамические массивы Динамическая таблица Многоуровневый вектор Дерево массивов хэшей Расширяемый массив Связанные списки Одиночные списки Ссылки, привязанные к двунаправленным спискам Списки, привязанные к XOR Пропущенные списки Хэш-таблицы Цепочки хеш-таблицы Линейные таблицы хеш-зондирования Квадратичные таблицы хэшей-зондирования Двойные хеш-таблицы Хеш-таблицы кукушки Идеальные хеш-таблицы Динамические идеальные хеш-таблицы Двоичные деревья Красные / черные деревья Интервальные деревья Двоичные деревья поиска Сегментные деревья AVL-деревья Деревья деревьев Деревья деревьев деревьев с козлами отпущения Treap Приоритетные очереди Двоичная куча Биномиальная куча Fibonacci heap van Emde Boas tree Скос биномиальной кучи Brodal queue Деревья Radix Trie Patricia дерево Тройное дерево поиска Многодорожечные деревья B дерево B + дерево B * дерево Геометрические деревья Quadtree Octree kd-Tree BSP-tr ee R-tree Геометрические структуры Краеугольное Quadege Структуры подключения к сети Развязанный лес Дерево связывания / вырезания Дерево сверху Дерево Графики DAG Направленный граф Неописанный граф Гиперграф

Ссылки:

Динамический массивы Динамическая таблица Многоуровневое векторное дерево хэшированных массивов Расширяемый массив Список структур данных в Википедии Связанные списки Односвязные списки Связанные с двойным списком списки, связанные с XOR Пропустить списки Структуры данных и алгоритмы на Github 1 Таблицы хэшей Цепные хеш-таблицы Линейные таблицы хеширования зондов Квадратичные таблицы хэша зондирования Двойные таблицы хэша Таблицы хэша кукушки Идеальные хеш-таблицы Динамические идеальные хеш-таблицы