【发布时间】:2011-12-10 08:17:42
【问题描述】:
这是作业
我正在为我的 C++ 类实现一个链表类,而复制构造函数让我很困惑。
链表由称为 Elems 的结构组成:
struct Elem
{
int pri;
data info;
Elem * next;
};
Elem * head;
info 是一个单独的自定义类,存储在 Elem 中。
复制构造函数的签名是:
linkedList::linkedList( const linkedList &v )
我遇到的问题主要是把我的逻辑写成代码。
我的总体思路是:
- 将 head 设置为 v.head (head = v.head)
- 将 Elem 的值设置为 v (pri = v.pri , info = v.info , next = v.next)
- 遍历,重复第 2 步。
这是大意吗?
任何帮助都会很棒。 记住,这是作业,所以请不要直接回答!
感谢您的宝贵时间
================================================ ==================================================== ==================================================== =================
感谢大家的宝贵时间!
我想我已经明白了:
//Copy Constructor
LinkedList::LinkedList( const LinkedList &v )
{
Elem * p1 = 0;//current
Elem * p2 = 0;//next
if( v.head == 0 )
head = 0;
else
{
head = new Elem;
head -> pri = v.head -> pri;
head -> info = v.head -> info;
p1 = head;
p2 = v.head -> next;
}
while( p2 )
{
p1 -> next = new Elem;
p1 = p1 -> next;
p1 -> pri = p2 -> pri;
p1 -> info = p2 -> info;
p2 = p2 -> next;
}
p1 -> next = 0;
}
我很确定这行得通。我画了一些合乎逻辑的图片来帮忙,我没有遇到任何问题。
【问题讨论】:
-
复制构造函数到底应该做什么?使用适当的链接生成每个节点的副本听起来很合理,但这不是唯一的可能性。
-
+1 用于直截了当地写作业并要求不直接回答。
-
感谢您给我正确的提示!我为我的节点实现了一个深拷贝构造函数,以便能够返回一个带有父节点及其父节点的引用结构的“最终”节点的对象......以保持完整。将其用于树搜索算法
标签: c++ linked-list copy-constructor