Связанные списки предпочтительнее массивов, когда:
a) вам нужны постоянные вставки / удаления из списка (например, в вычислениях в реальном времени, где предсказуемость времени абсолютно необходима)
б) вы не знаете, сколько предметов будет в списке.С массивами вам может потребоваться повторно объявить и скопировать память, если массив становится слишком большим
в) вам не нужен произвольный доступ к любым элементам
г) вы хотите иметь возможностьдля вставки элементов в середину списка (например, очереди с приоритетами)
Массивы предпочтительнее, когда:
a) требуется индексированный / произвольный доступ к элементам
b) вы заранее знаете количество элементов в массиве, чтобы вы могли выделить правильный объем памяти для массива
c) вам нужна скорость при переборе всех элементов впоследовательность.Вы можете использовать математическую указатель на массиве для доступа к каждому элементу, тогда как вам нужно искать узел на основе указателя для каждого элемента в связанном списке, что может привести к сбоям страницы, что может привести к снижению производительности.
г) память является проблемой.Заполненные массивы занимают меньше памяти, чем связанные списки.Каждый элемент в массиве - это просто данные.Каждый узел связанного списка требует данных, а также одного (или нескольких) указателей на другие элементы в связанном списке.
Списки массивов (как и в .Net) дают вам преимущества массивов, но динамически распределяютресурсы для вас, так что вам не нужно слишком беспокоиться о размере списка, и вы можете удалять элементы в любом индексе без каких-либо усилий или перестановки элементов вокруг.С точки зрения производительности, массивы работают медленнее, чем необработанные массивы.
Ссылка: ответ Ламара https://stackoverflow.com/a/393578/6249148