В принципе, я никогда не говорю "попробуйте [anySearhEngine]", но вы можете проверить этот список: http://en.wikipedia.org/wiki/List_of_data_structures
Вы можете рассмотреть объединение / поиск структур данных . Они являются фундаментальными для некоторых алгоритмов графов.
Матрицы , поскольку они служат основой для моделирования таких проблем, как:
Для получения справки прочтите документацию по коллекциям Java. Они разбивают вещи на абстрактный уровень (Set, List и Map) и уровень реализации (ArraySet, HashSet, ArrayList, LinkedList, TreeMap, HashMap).
Для получения справки прочтите документацию по коллекциям Python. Они разбивают вещи на абстрактные базовые классы, такие как Set, Sequence и Map, которые построены из функций mixin коллекции.
Я бы добавил карты, если вы не хотите считать, что они находятся под наборами.
некоторые могут считаться менее фундаментальными, чем другие:
Кортежи .
Кроме того, если бы я мог назначить одну неосновную структуру данных, это будет постоянный префикс Hash Tries с разделением на биты из Clojure. В целом, я считаю, что настойчивость является очень важным и часто упускаемым из виду свойством любой структуры данных.
Ассоциативный массив - это общий способ обозначения словарей, карт и т. Д. Вы можете найти это почти в любой структуре.
Битовый массив не является фундаментальным, но он очень удобен и может быть эффективно представлен с использованием целых чисел (и побитовых операторов)
Контрольная ячейка. С его помощью вы можете создать несколько других структур данных (списки, деревья и т. Д.)
Quadtree s, как наиболее простой вид пространственного индекса.
Вы забыли основные: struct , object ] и перечисляет .
строки, хотя они могут быть реализованы как массивы под капотом (как и несколько других структур данных).
Любая программа, которая взаимодействует с пользователем, будет использовать строки. Важно знать, как управлять строками.
Также фундаментальной является структура данных Graph .
Думаю, ваш вопрос неясен, потому что вы смешиваете реализацию и цель ...
следующие типы описывают реализацию:
ну, я считаю, что стоит упомянуть еще одну вещь: алгебраические типы данных ... в зависимости от языка они либо существуют изначально, или вам придется их подражать ... Haxe и C # (насколько я слышал) - это два императивных языка, предлагающих их, просто разрешая параметры для перечислений ... их можно использовать для реализации списков, деревьев и многих других приятных вещей ... например,
"Объект функции", "указатель функции" или "закрытие" не могут быть реализованы в некоторых ограничивающих языках, в которых есть массивы, связанные списки и т.д.. Но, возможно, они ближе к типам данных, чем к структурам данных.
Реализация "веревки" (реализованная в библиотеке "cord") - моя любимая реализация абстрактной структуры данных "string", но, возможно, она не совсем "фундаментальная".