Попытка написать простой конструктор копирования для связанного класса списка. Мой класс прост, у меня есть переменная First, указывающая на первый узел, и переменная Last, которая указывает на последний узел.C++ написать конструктор копирования для простого связанного списка
Это односвязное соединение, поэтому каждый узел просто указывает на следующий, нет предыдущего. Пытаясь написать конструктор копирования, но обнаружив, что последний узел по-прежнему указывает на один и тот же адрес, например, если я добавлю что-то в скопированный список, он также отображается в исходном.
Вот что я до сих пор:
queue::queue(const queue &v){
first = v.first;
last = v.last;
first-> value = v.first->value;
node *curr = first;
node *otherCur = v.first;
while(otherCur->next != NULL){
cout << "------Next is: " << otherCur->next->value << endl;
curr ->next = otherCur->next;
curr->next->value = otherCur->next->value;
curr = curr->next;
otherCur = otherCur->next;
}
curr->next = NULL;
}
Все узлы второго объекта указывают на одни и те же узлы в первом объекте. Вам необходимо выделить память для узлов второго списка и просто скопировать значения из узлов первого списка. –
Чтобы повторить, вы копируете указатели, когда вы должны копировать данные, указывающие на данные – qxz