C++ 如何递归复制双链表C++;
我不知道我在这里做错了什么 //递归地复制列表C++ 如何递归复制双链表C++;,c++,C++,我不知道我在这里做错了什么 //递归地复制列表 void duplicateNodes(const SortedList& o, Node * const copyIter) { if (copyIter != NULL) { o.add(o.head, copyIter->data); duplicateNodes(o, copyIter->next); } } “添加”方法
void duplicateNodes(const SortedList& o, Node * const copyIter) {
if (copyIter != NULL) {
o.add(o.head, copyIter->data);
duplicateNodes(o, copyIter->next);
}
}
“添加”方法的作用是什么?它是在列表的末尾还是开头添加节点
另外,您是在尝试创建2个排序列表,还是只是将列表中的每个节点加倍?见下文:
原始列表:A->B->C
2个列表:A->B->C&A->B->C
每个节点加倍:A->A->B->B->C->C将
常数移动到第二个参数:
void duplicateNodes(SortedList& o, Node const * const copyIter)
您正在修改第一个参数,因此它不能是const
如果您不告诉use它有什么问题,或者SortedList
等等,那么我们也不能这样做。missiono
是常量,它似乎是源,但您似乎将其视为目标,和copyIter
作为源。您的参数o是const
,对此使用递归可能不是一个好主意。它应该在指定的索引处添加/*递归地将节点添加到列表中。*/虚拟void add(Node*const after,const E&o){}它只是原始列表的一个副本。不是列表中的每个节点都加倍。