链表递归插入函数
linked list insert function recursively c++
我正在递归地编写插入函数,用于向列表添加元素。问题是,当我运行程序并尝试插入时,它只插入一次,然后在第二次它中断并有一个错误。有什么建议,谢谢
辅助功能:
void List::insertHelper(Node* list, int number)
{
if(list->next != NULL)
{
insertHelper(list->next, number);
}
else
{
list->next = new Node;
list->next->data = number;
}
}
当我调用递归函数时
这个函数:
void List::insert( int d)
{
if( head == NULL)
{
head = new Node;
head->data = d;
}
else
{
insertHelper(head, d);
}
}
您的问题是缺少以下内容:
list->next->next = NULL;
在insertHelper的else部分。至于"建议"部分,尽可能避免递归地处理列表。你的(未来的)同事不会喜欢的。
void List::insertHelper(Node* list, int number)
{
if(list->next != NULL)
{
insertHelper(list->next, number);
}
else
{
list->next = new Node;
list->next->data = number;
list->next->next=NULL; // You are missing this line.... becuase of this.. new nodes next remains as dangling pointer instead of null..
}
}
每次插入新节点时,必须将该新节点的下一个值设置为NULL。否则,每次调用insertHelper时都会得到一些垃圾指针值。
这是修改后的代码。
void List::insertHelper(Node* list, int number)
{
if(list->next != NULL)
{
insertHelper(list->next, number);
}
else
{
list->next = new Node;
list->next->data = number;
list->next->next = NULL; //MODIFIED LINE
}
}
void List::insert( int d)
{
if( head == NULL)
{
head = new Node;
head->data = d;
head->next = NULL; //MODIFIED LINE
}
else
{
insertHelper(head, d);
}
}
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- 为 std::vector 编写自定义插入函数
- 类数组插入函数
- 无法在构造函数中执行设置元素插入
- 需要帮助将字符串插入函数
- 尝试使用 EvtSetChannelConfigProperty() 函数更新最大事件日志文件大小时插入的错误值
- 通过构造函数插入 std::map
- 在 C++ 中为特定哈希表创建插入函数
- sqlite3 c 函数:插入语句作为参数时未执行
- 编译器可以将静态模板函数插入
- SegFault将插入std :: vector的成员函数插入std :: vector
- 默认情况下构造函数插入数据后,我没有得到任何输出,但我不确定为什么不
- 如何将变量类型作为参数函数插入
- 插入迭代器与容器的成员函数插入器
- 将函数插入主要部分
- 递归函数插入二叉搜索树无法按根访问节点
- 使用自定义哈希函数插入到一个无序集合中
- 如何使用std库函数插入std::列表并保持顺序