Реализация связанного списка в C++

Google Translate Icon

В этом посте представлен обзор некоторых доступных методов реализации связанного списка на языке программирования C++.

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

 
Узлы связанного списка размещаются в куче памяти. Мы можем использовать новый оператор в C++ для динамического выделения памяти и delete оператор для освобождения выделенной памяти.

Потренируйтесь в этой проблеме

 
Существует несколько способов построения односвязного списка. Каждый из них подробно описан ниже:

1. Наивный метод

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

Linked List Implementation

Скачать  Выполнить код

2. Одна линия

Мы можем записать приведенный выше код в одну строку, передав следующий узел в качестве аргумента функции newNode() функция:

Linked List Construction

Скачать  Выполнить код

3. Общий метод

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

Скачать  Выполнить код

4. Стандартное решение

Стандартное решение добавляет один узел в начало любого списка. Эта функция называется push() так как мы добавляем ссылку в головной конец, делая список немного похожим на stack.

Мы знаем, что C++ имеет встроенный & аргумент функция для реализации эталонных параметров. Если мы добавим & к типу параметра, компилятор автоматически заставит параметр работать по ссылке, не нарушая тип аргумента.

Скачать  Выполнить код

5. Сделайте указатель головы глобальным

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

Скачать  Выполнить код

6. Возврат головы из push() функция

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

Скачать  Выполнить код

 
Продолжить чтение:

Связанный список – вставка в конце | Реализация C, Java и Python

 
Также см:

Реализация связанного списка в C

Реализация связанного списка в Java

Реализация связанного списка в Python

 
Использованная литература: http://cslibrary.stanford.edu/103/LinkedListBasics.pdf

Оценить этот пост

Средний рейтинг 4.83/5. Подсчет голосов: 266

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?




Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования :)



Подписывайся
Уведомить о
guest
2 Комментарии
Большинство голосов
Новейшие Самый старый
Встроенные отзывы
Просмотреть все комментарии
НЕ переходите по этой ссылке, иначе вы будете забанены на сайте!