Я только что закончил работу над конструктором экземпляров одиночного списка, и теперь я решил создать конструктор копии с двойным списком. Может ли кто-нибудь сказать мне, насколько это отличается от конструктора одиночного списка, потому что я столкнулся с запуском заново для моего конструктора с двойным связыванием списков или для копирования моего конструктора копии одиночного списка. Как мне это сделать?Doubly List Copy Constructor: Как отличается он от единственного экземпляра Copy Constructor?
Если это помогает, вот мой конструктор копирования из моего односвязного списка:
List(const List ©ing) : head(NULL)
{
Node* cur = copying.head;
int size = copying.size();
Node* end = NULL;
for(int q = 0; q < size; q++)
{
Node* n = new Node;
n->value = cur->value;
if (head == NULL)
{
head = n;
end = head;
}
else
{
end->next = n;
end = n;
}
cur = cur->next;
}
end->next = NULL;
}
Любое вход приветствуется. Спасибо всем :-)
Ваш конструктор копирования с односвязным списком взорвется, если вы копируете из пустого списка. Первое правило связанных списков: никогда не бывает особых случаев. 'Node ** target = &head; for (Node * cur = copying.head; cur; cur = cur-next) {Node * n = новый узел (cur-> value); * target = n; target = & (n-> next); } * target = nullptr; ' –
Что именно« взорвет »означает @MartinBonner? Я на самом деле новичок в программировании на C++. –
@PeterG Эта ссылка не касалась конструкторов копирования. Я проверил его, но он не ответил на мой запрос о конструкторах копий для дважды связанных списков. –