该代码应该附加两个链表,我完全看不到该代码如何附加作为参数传递的两个单元格结构,因为第二个参数没有任何操作。它只是问第一个Cell中的下一个节点-那么这怎么工作?

void Append(Cell *& first, Cell* second)
{
  if (first == NULL)
  {
    first = second;
  }
else {
    Append(first->next, second);
  }
}

最佳答案

函数的else块一直跟随nextfirst指针,直到到达该列表的末尾。也就是说,直到first->nextNULLelse不被执行。

现在,基本情况在if块中。当first->nextNULL时,它将更改该指针以指向second,它可能是另一个列表中的第一个元素。

之所以会产生某些效果,是因为first->next指针是通过引用传递的。修改指针将修改列表末尾的实际指针,而不仅仅是修改副本。

关于c++ - C++:以递归方式添加链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14006653/

10-09 06:44
查看更多