双列表复制构造函数:它与单列表复制构造函数有何不同?
Doubly List Copy Constructor: How different is it from a Singly List 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;
}
欢迎任何和所有意见。谢谢大家:-)
我想你只需要存储前一个节点(prv)。
假设你的节点有 prv 作为数据成员。
List(const List ©ing) : head(NULL)
{
Node* cur = copying.head;
int size = copying.size();
Node* end = NULL;
Node* prv = 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;
}
n->prv=prv;
prv=n;
cur = cur->next;
}
end->next = NULL;
}
我刚刚完成了单列表复制构造函数的工作,现在我正准备制作一个双列表复制构造函数。谁能告诉我它与单列表构造函数有何不同,因为我在重新开始我的双向链表复制构造函数或复制我的单列表复制构造函数之间发生冲突。我该怎么办?
如果有帮助,这是我的单链表中的复制构造函数:
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;
}
欢迎任何和所有意见。谢谢大家:-)
我想你只需要存储前一个节点(prv)。 假设你的节点有 prv 作为数据成员。
List(const List ©ing) : head(NULL)
{
Node* cur = copying.head;
int size = copying.size();
Node* end = NULL;
Node* prv = 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;
}
n->prv=prv;
prv=n;
cur = cur->next;
}
end->next = NULL;
}