@chaturanga

Для чего внутри связного списка нужен массив?

Имеется задача по хранению данных. По заданию данные хранятся в двусвязном (для ускорения поиска последних внесённых данных) списке, в каждой ноде которого создаётся массив из N (по умолчанию 8) элементов.
По реализации вопросов нет, но остался вопрос "зачем"? Какое преимущество даёт создание дополнительного массива по сравнению с хранением в обычном двусвязном списке?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
В тексте задания уже есть ответ на ваш вопрос:
To better utilize memory, the list should include an array T=8 of structures representing a block


Для экономии памяти. Такие гибридные структуры обладают характеристиками средними между списком и массивом. В список можно быстро вставлять и удалять из него элементы. В массивах можно быстро искать k-ый элемент и он занимает меньше памяти (не нужны указатели).

Ваша структура позволяет добавлять и удалять элементы быстрее чем в массиве, но при этом занимает меньше памяти чем просто список, хоть и добавление и удаление элементов там медленнее, чем в списке.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Видимо планируется хранить список на медленном устройстве хранения (на диске). Тогда такое построение связного списка вполне оправдано - за одно чтение можно прочитать несколько блоков данных.
Возможно примерно таким же способом хранятся таблицы в СУБД. Называться это может по разному.
Так же в СУБД часто применяют b-tree для хранения индексов, в этом дереве то же хранится несколько элементов данных в одном узле.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347
Crazy on performance...
К ответам выше я бы еще добавил, что массивы более дружелюбны к процессорному кэшу чем связные списки. Варьируя размер массивов в нодах списка можно подобрать такой размер ноды, чтоб она соответствовала размеру кэш-линии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы