C++ 复制链接列表的反面 copyRev

C++ 复制链接列表的反面 copyRev,c++,linked-list,C++,Linked List,嗯,我正试图克隆链表的反面。我知道如何在适当的位置反转列表。但是这个代码给了我一个总线错误(代码转储) 这就是我在main() 节点*head; 对于(int i=0;i,乍一看您忘记初始化列表头: node *head = 0; 编辑多亏了Alan:和revHead您没有初始化指针: node *head; node *revHead; 因此,它们具有不确定的值(即它们是随机的) 以任何方式使用这些poitner中的值都是未定义的行为。这可能是您的错误 只需初始化它们: node* he

嗯,我正试图克隆链表的反面。我知道如何在适当的位置反转列表。但是这个代码给了我一个
总线错误(代码转储)

这就是我在
main()

节点*head;

对于(int i=0;i,乍一看您忘记初始化列表头:

node *head = 0;

编辑多亏了Alan:和revHead

您没有初始化指针:

node *head;
node *revHead;
因此,它们具有不确定的值(即它们是随机的)

以任何方式使用这些poitner中的值都是未定义的行为。这可能是您的错误

只需初始化它们:

node*  head     = NULL;
node*  revHead  = NULL;
链接列表的递归反转:
尝试向我们展示
append
函数。学习使用堆栈交换站点使用的标记。谢谢。我们将学习。您是否想过将列表节点包装到符合STL的迭代器(例如使用
boost::iterator
)然后让STL算法来做这项工作?@ PaulMichalik:你能给它一些链接吗?我正在学习所有这些方法。@ SrimaStgs:是的。但是我还有其他一些事情要做。首先你的风格仍然是C。C++鼓励更好的封装。一旦你完成了这个,那么递归的解决方案也变得容易。好的。看看我是如何做到的。可以。有关于这个主题的链接吗?
node *head = 0;
node *head;
node *revHead;
node*  head     = NULL;
node*  revHead  = NULL;
void reverse(node*& head)
{
     head = reverse(head, NULL);
}
node* reverse(node* item, node* next)
{
     if (item == NULL)
     {    return next;
     }
     node*  iter = item->next;
     item->next  = next;
     return reverse(iter, item);
}