0
二重リンクリストのコピーコンストラクタの実装に問題があります。私は、下のforループにtailとpreviousポインタを設定しますか?単独リンクリストに対して次の作品:doubleLinkedListコピーコンストラクタ
sortedList::sortedList(const sortedList& original)
: size(original.size)
{
if (original.head == NULL)
head = NULL; // original list is empty
else
{
// copy first node
head = new listNode;
tail = new listNode;
assert(head != NULL); // check allocation
assert(tail != NULL); // check allocation
head->item = original.head->item;
tail->item = original.tail->item;
// copy rest of list
listNode *newPtr = head; // new list pointer
// newPtr points to last node in new list
// origPtr points to nodes in original list
for (listNode *origPtr = original.head->next; origPtr != NULL; origPtr = origPtr->next)
{
newPtr->next = new listNode;
assert(newPtr->next != NULL);
newPtr = newPtr->next;
newPtr->item = origPtr->item;
/*
newPtr = new listNode;
newPtr->item = origPtr->item;
newPtr->prev = origPtr->prev;
tail->next = origPtr;
tail = origPtr;*/
}
newPtr->next = NULL;
}
}
は答えを追加しました。それが動作するかどうか試してみてください。 – trans1st0r