Найти тему
IT для всех

Структуры данных. Массивы и списки

Оглавление

Как работает память

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

Схематическое изображение ячеек памяти найденное в интернете
Схематическое изображение ячеек памяти найденное в интернете
Речь конечно же об оперативной памяти, как о памяти задействованной при запуске программ и обеспечивающей их работу.

Если же требуется сохранить сразу несколько значений под одним именем, то придуманы такие вещи как - массивы и списки.

Подытожим термины:

1. Область памяти - пространство разделенное на ячейки с присвоенными им адресами

2. Ячейка памяти - коробочка в которую помещается значение в двоичной кодировке.

3. Адрес ячейки памяти - уникальный номер коробочки представленный в шестнадцатиричной системе счисления, например - 0x9B38

Массивы

При создании массивов все значения хранятся непрерывно в памяти, то есть друг за другом.

-2

В массиве все адреса элементов заранее известны, так как зная размер массива можно просто идти по порядку в области памяти.

Связанные списки

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

-3

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

Кстати, чтобы "раскопать" сущность связанных списков, можно создать итераторы и пройтись по объекту с помощью команды next() подобно тому как это работает в памяти

Так что же лучше?

+ Массивы:

  • Доступ к элементам: позволяют производить произвольный доступ к любому элементу, так как все адреса ячеек памяти заранее известны, в то время как в списках требуется прохождение по всем элементам.
  • Более высокая скорость: благодаря тому же произвольному доступу

+ Списки:

  • Более простое удаление: достаточно лишь изменить указатель на ячейку памяти в прошлом элементе относительно удаленного, когда массив будет сдвинут назад на один элемент в ячейках памяти
  • Всегда возможна вставка в конец: таким же образом находится хаотичная ячейка памяти, когда в массиве следующая за последним элементом ячейка может быть занята
  • Всегда возможна вставка в середину: в то же время массив потребуется переместить в другую область памяти, так как при добавлении придется сдвигать все следующие за новым элементы на один
Наука
7 млн интересуются