该代码应该附加两个链表,我完全看不到该代码如何附加作为参数传递的两个单元格结构,因为第二个参数没有任何操作。它只是问第一个Cell中的下一个节点-那么这怎么工作?
void Append(Cell *& first, Cell* second)
{
if (first == NULL)
{
first = second;
}
else {
Append(first->next, second);
}
}
最佳答案
函数的else
块一直跟随next
的first
指针,直到到达该列表的末尾。也就是说,直到first->next
为NULL
且else
不被执行。
现在,基本情况在if
块中。当first->next
是NULL
时,它将更改该指针以指向second
,它可能是另一个列表中的第一个元素。
之所以会产生某些效果,是因为first->next
指针是通过引用传递的。修改指针将修改列表末尾的实际指针,而不仅仅是修改副本。
关于c++ - C++:以递归方式添加链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14006653/