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);
}