Различные методы инициализации связанного списка

Опубликовано: 23 Февраля, 2023

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

Есть два способа скопировать связанный список в другой связанный список:

  • Copy constructor
  • Overloading the ‘Assignment’ operator

Копировать конструктор и связанный список

A copy constructor is just like a constructor; it is a member function that is used to initialize a value to an object with the help of another object in the same class. It is easier to use in the C++ programming language when there are several object parameters in the class. 

Переменные объекта связанного списка были динамически выделены, поэтому необходимо выполнить глубокую копию, чтобы создать копию объекта. Обратитесь к разделу «Поверхностное копирование и глубокое копирование в C++», чтобы узнать больше об этом.

Для использования конструктора копирования в связанном списке:

  • Мы использовали класс Node для создания узла связанного списка. Здесь используется класс с именем linkedlist .
  • Приватная часть будет содержать переменные указателя head и tail.
  • Обычный конструктор присваивает значения головной и хвостовой частям в общедоступной части, а конструктор копирования используется для инициализации объекта связанного списка существующими.

Ниже приведена реализация конструктора копирования .

Перегрузка оператора присваивания и связанного списка

Assignment operators are used to assign value to a variable. 

Левый операнд оператора присваивания — это переменная, а правый операнд оператора присваивания — это значение. Значение в правой части должно иметь тот же тип данных, что и переменная в левой части, иначе компилятор выдаст ошибку.

Assignment operator overloading is binary operator overloading. Overloading assignment operator in C++ copies all values of one object to another object. 

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

Ниже приведена реализация перегрузки оператора присваивания .