我一直在困难的时间包围指针和链表。我可以看到这些类型的问题在这里经常被问到,所以我很抱歉加入到这个论坛的泥潭中。然而,我一直试图将这项任务包装两天,而我似乎无法得到它。链接列表值的C++复制构造函数,而不是地址
我应该指出这是一项家庭作业!
我有一个项目,其中我必须复制链表,销毁旧列表并保留值。我几乎必须通过引用将整个列表传递给拷贝构造函数,而不仅仅是一个节点。
我已经看到了一些真正伟大的反应已经在这里做了一些挖后,和最近我看到一个解决方案,我需要实现的是这一个:
Coding a function to copy a linked-list in C++
当我尝试实现类似的代码,以我的,它给我这个错误在编译:错误:一元的无效类型参数“*”(有“诠释”)链表
下面的代码:
IntList::IntList(const IntList &a){
if(a.head != NULL)
{
ListNode *thisNode = a.head;
ListNode *nextN = NULL;
while(thisNode != NULL)
{
ListNode *newNode = new ListNode;
newNode->value = (*thisNode->value); //error occurs here
if(nextN == NULL)
{
nextN = newNode;
}
else
{
nextN->next = newNode;
nextN = nextN->next;
}
thisNode = thisNode->next;
size++;
}
}
else
{
cout << "The list empty." << endl;
return;
}
}
如果我删除第10行的封装,构造函数不会发出错误。但是,一旦我调用析构函数,旧列表仍然引用刚被清空的内存。
我真的很感谢在这个任务上的任何帮助。我认为我并没有正确引用指针,但似乎无法破解代码并使其正常工作...
欢迎来到StackOverflow。 请参考[游览], 学习问好问题stackoverflow.com/help/how-to-ask, 做个[mcve]。 如果您正在寻找调试代码的帮助,请参阅https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch
您应该使用newNode-> value = thisNode-> value – Kapil