Итак, мы рассмотрели типы структур данных.
Теперь мы узнаем о первой линейной структуре данных, то есть о массиве.
Если у вас есть базовые знания о массивах, то есть о синтаксисе и его типах, тогда мы можем поговорить о его преимуществах и недостатках.
Преимущества:
- Подобные элементы данных — все элементы массива имеют одинаковый тип.
- Легко получить доступ к любому элементу через его индекс.
- Используется при реализации стеков и очередей.
- Подходит, когда количество элементов уже известно.
Недостатки:
а) Статическое выделение памяти — память для элементов выделяется во время компиляции. Мы не можем увеличивать или уменьшать размер массива после выделения.
б) Вставка и удаление элементов в массиве. Довольно сложно добавить новый элемент в массив в любом месте, кроме конца списка. Мы должны сдвинуть/переместить все элементы в правой части позиции индекса, где должен быть добавлен новый элемент.
Пример: если мы хотим вставить элемент «8» в этот массив
мы должны сдвинуть все элементы после «7» на один шаг вправо, а последний элемент должен быть отброшен.
Следовательно, у нас есть концепция связанных списков.
Вы можете подумать, зачем нам новая концепция под названием «Связанные списки», если у массивов больше преимуществ, чем недостатков.
Это тот момент, когда нам нужно знать, насколько важны эти 2 недостатка…..
В связанных списках память выделяется динамически, т. е. память выделяется во время выполнения, благодаря чему мы можем изменять размер списка в соответствии с пользователем.
ПРИМЕЧАНИЕ. Что бы вы ни узнали, это должно удовлетворить клиента (пользователя), когда вы это реализуете.
Вставка и удаление элементов очень просты по сравнению с массивами.
Преимущества связанных списков:
- Не будет потери памяти, так как они распределяются динамически.
- Он может хранить в нем данные любого типа, т.е. гетерогенные.
- Вставка и удаление легко
- В реализации стеков и очередей
Теперь давайте посмотрим, как выглядит связанный список:
Так выглядит связанный список. Он состоит из 2-х частей:
- Часть данных
- Link part – для привязки адресной части следующего узла
Мы подробно все обсудим…….. в следующих статьях