【发布时间】:2016-10-09 20:51:37
【问题描述】:
尝试为链表类编写一个简单的复制构造函数。我的类很简单,我有一个变量 First 指向第一个节点,还有一个变量 Last 指向最后一个节点。
它是单链接的,所以每个节点只指向下一个,没有前一个。试图写一个拷贝构造函数,但发现最后一个节点似乎仍然指向同一个地址,所以如果我在复制的列表中添加一些东西,它也会出现在原来的列表中。
这是我目前所拥有的:
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;
}
【问题讨论】:
-
第二个对象中的所有节点都指向第一个对象中的相同节点。您需要为第二个列表的节点分配内存,然后从第一个列表的节点中复制值。
-
重申一下,当您应该复制指向的数据时,您正在复制指针
标签: c++ linked-list copy-constructor