Вы можете считать массивы и связанные списки фундаментальными в том смысле, что по существу существует один способ их реализации (последовательность смежных объектов для массива, линейная цепочка (односвязная или двойная связь) объектов для связанного списка). *
Более продвинутые структуры данных можно считать «производными» в том смысле, что они могут быть реализованы несколькими способами и, по сути, возвращаться к массивам и связанным спискам на самом низком уровне. Примеры:
--- n-арное дерево обычно реализуется как серия связанных узлов (например, список), но каждый узел содержит массив дочерних ссылок. Для бинарного дерева вы обычно не видите массив явно, потому что потомкам обычно дают имена слева и справа.
--- Хеш-таблицы могут быть реализованы несколькими способами. Для связанной хеш-таблицы она реализована в виде (разреженного) массива связанных списков. Для хеш-таблицы с пробной или открытой адресацией это просто большой массив с логикой коллизий.
--- Наборы, как правило, являются деревьями или хеш-таблицами и, таким образом, транзитивно определяются в терминах массивов и списков
--- Стеки, очереди, векторы и т. Д. - это просто массивы со специальной семантикой.
Я согласен с другими авторами, что у CS на самом деле нет «учебного» определения фундаментальных структур данных, но вы легко можете увидеть, что это «фактическая» правда.
Интересный вопрос, кстати ...