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
等等,那么我们也不能这样做。mission
o
是常量,它似乎是源,但您似乎将其视为目标,和
copyIter
作为源。您的参数o是
const
,对此使用递归可能不是一个好主意。它应该在指定的索引处添加/*递归地将节点添加到列表中。*/虚拟void add(Node*const after,const E&o){}它只是原始列表的一个副本。不是列表中的每个节点都加倍。