0
我使用几乎所有的递归函数创建一个链表,并且我迷上了复制构造函数。链表有一个头部和一个尾部虚拟节点。我有:递归复制链接列表
/* Recursively duplicates the list. */
void duplicateNodes(const SortedList& o, Node * const copyIter) {
if (copyIter != head) {
duplicateNodes(o, copyIter->previous);
}
tail = tail->next = createNode(tail, copyIter->data, nullptr);
size = o.size;
}
我的拷贝构造函数:
SortedList(const SortedList& o) {
duplicateNodes(o, o.tail);
}
提前感谢!我还没完全理解递归。
如果'head'和'tail'是'SortedList'的私有成员,我建议使用'_tail'或'm_tail'等前缀表示法。 – Dagrooms
或者总是用this-> tail来表示它。另外我讨厌人们在同一条线上使用两个作业,阅读和跟随是很可怕的。 –
顺便说一句,在我看来,你在这里得到的是一个无止境的循环,只是自己反复调用自己。你的第一个if语句可能是真的,你的递归将继续调用duplicateNodes –