Google Play badge

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


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

Добро пожаловать на наш урок по массивам и связанным спискам. На этом уроке мы изучим два простых способа хранения и организации данных. Представьте, что у вас есть ряд ящиков для игрушек или ряд шкафчиков в школе. Массивы и связанные списки работают похожим образом. Они помогают нам поддерживать порядок и облегчают поиск. Этот урок написан простым языком с повседневными примерами, чтобы помочь вам легко понять эти идеи.

Введение

Структуры данных помогают компьютерам хранить и организовывать информацию. Две важные структуры данных — это массивы и связанные списки. Вы можете представить массив как ряд коробок, а связанный список — как цепочку связанных подсказок в поисках сокровищ. Оба они помогают нам отслеживать множество предметов, таких как игрушки, книги или даже ваши любимые закуски.

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

Что такое массив?

Массив — это просто набор предметов. Он похож на ряд коробок, в каждой из которых лежит один предмет. Например, представьте себе набор из пяти коробок, выстроенных в ряд. Вы можете использовать каждую коробку для хранения любимой игрушки или закуски.

Каждый ящик в массиве имеет номер, называемый индексом. Первый ящик обычно имеет номер 0, следующий — 1, затем 2 и т. д. Такая нумерация помогает быстро найти определенный элемент. Например, если вам нужен элемент в третьем ящике, вы просто смотрите на ящик с индексом 2.

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

\( \textrm{Адрес}(A(i)) = \textrm{Адрес}(A(0)) + i \times \textrm{(размер одного предмета)} \)

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

Свойства массивов

Представьте себе массив как места в небольшом кинотеатре. Каждое место имеет номер, и вы можете быстро перейти к своему месту, если знаете его номер.

Пример массива на каждый день

Представьте, что в вашей школе есть ряд шкафчиков, каждый из которых имеет уникальный номер. Когда вы идете, чтобы положить сумку в шкафчик, вы используете определенный номер на шкафчике. В массиве каждый шкафчик похож на коробку, а номер указывает вам точное место, где хранится ваша сумка — или данные.

Что такое связанный список?

Связанный список — это еще один способ хранения элементов. Он отличается от массива тем, что не использует длинный ряд фиксированных ячеек. Вместо этого он использует специальные ячейки, называемые узлами. Каждый узел содержит элемент, а также имеет указатель, который сообщает, где находится следующий узел.

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

Вы можете представить каждый узел как небольшой конверт. Конверт несет карточку (данные), а также записку (указатель). Эта записка сообщает вам, какой конверт будет следующим в линии.

Как работает связанный список

Давайте рассмотрим простой способ записи того, что такое узел:

Узел = {данные, указатель)

«Данные» в узле — это хранимая информация, а «указатель» подобен стрелке, которая направляет вас к следующему узлу. В отличие от массива, связанный список не требует, чтобы все узлы находились рядом друг с другом в памяти; они могут быть где угодно, пока указатели соединяют их.

Типы связанных списков

Существуют различные стили связанных списков. Вот три распространенных вида:

Реальный пример связанного списка

Представьте, что вы следуете по карте сокровищ. Каждый шаг на карте подсказывает вам, где находится следующий шаг. Даже если вы добавите дополнительную подсказку или уберете одну, вы все равно сможете следовать дальше, читая подсказку на каждой карте. Так работает связанный список. Каждый узел (или подсказка) соединен со следующим, позволяя вам двигаться по списку на один шаг за раз.

Сравнение массивов и связанных списков

Массивы и связанные списки помогают нам хранить элементы, но делают это по-разному. Вот несколько сравнений:

Преимущества и недостатки

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

Массивы:

Преимущества:

Недостатки:

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

Преимущества:

Недостатки:

Работа с массивами

Давайте посмотрим, как можно использовать массив простым способом. Предположим, вы хотите сохранить пять любимых цветов. Вы создаете массив из пяти ячеек. Затем вы помещаете каждый цвет в ячейку по порядку. Например:

Теперь, если вы хотите узнать, какой цвет находится в поле 2, вы просто смотрите на это поле и видите «зеленый». Этот легкий доступ — одно из лучших преимуществ использования массива.

Работа со связанными списками

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

Например, представьте, что у вас есть три узла в связанном списке, которые рассказывают забавную историю:

Вы начинаете с узла 1 и следуете указателю (подсказке) к узлу 2, затем к узлу 3. Даже если вы хотите добавить новую подсказку между любым из них, вам нужно изменить всего несколько указателей. Это делает связанные списки очень гибкими.

Визуализация массивов и связанных списков

Полезно представить себе эти структуры данных. Представьте себе массив как длинный ряд четких, подписанных коробок на полке. Каждая коробка что-то содержит и имеет фиксированное место. Теперь представьте себе связанный список как ряд карточек. На каждой карточке есть заметка, указывающая, где спрятана следующая карта. В массиве вы можете перейти непосредственно к определенной коробке по ее номеру. В связанном списке вам нужно следовать за карточками по порядку.

Повседневные приложения

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

Связанные списки используются, когда количество элементов может меняться с течением времени. Представьте себе очередь людей, ожидающих у фургона с мороженым. Иногда к очереди присоединяются новые люди, а иногда кто-то уходит. Очередь может увеличиваться или уменьшаться без необходимости создания новой фиксированной структуры. Это делает связанные списки очень полезными в сценариях, где все часто меняется.

Настройка хранилища данных

Выбор между массивами и связанными списками зависит от того, что вам нужно делать с данными. Если вы знаете, что у вас всегда будет фиксированное количество элементов — например, дней в неделе — то массив очень подходит. Однако если объем данных меняется и вам нужна структура, которая может легко адаптироваться, связанный список будет лучшим выбором.

Например, в компьютерной игре массив может использоваться для хранения результатов для каждого уровня, поскольку количество уровней фиксировано. С другой стороны, связанный список может использоваться для управления списком действий или ходов игрока, который может расти по мере продолжения игры.

Как решить, какой вариант использовать

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

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

Основные положения и резюме

Давайте повторим основные моменты нашего урока:

Массивы:

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

Различия и применение:

Подводя итог, можно сказать, что массивы и связанные списки — это две важные структуры данных, используемые для организации данных. Массивы работают как ряд фиксированных пронумерованных ящиков, в то время как связанные списки работают как поиск сокровищ, где каждый шаг говорит вам, куда идти дальше. Оба метода имеют свои собственные сильные стороны и используются в разных ситуациях в зависимости от потребностей задачи.

Понимание этих двух методов хранения данных очень полезно. Многие компьютерные программы, игры и приложения используют массивы и связанные списки в фоновом режиме. Изучая, как они работают, вы получаете представление о том, как компьютеры организуют и управляют данными.

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

Этот урок дал вам четкое представление о том, что такое массивы и связанные списки. По мере того, как вы продолжаете изучать и исследовать информатику, эти базовые идеи помогут вам понять более сложные темы. Они являются строительными блоками более сложных структур данных и алгоритмов.

Краткое изложение основных моментов:

Спасибо за прочтение этого урока о массивах и связанных списках. Надеемся, вам понравилось изучать эти методы хранения данных понятным и простым способом. По мере того, как вы растете и узнаете больше, помните эти базовые структуры и то, как они помогают компьютерам работать эффективно.

Download Primer to continue