c++ - 为什么添加功能在链表中不起作用
问题描述
我很好奇以下两个功能有什么区别:
void Add(T x)
{
if (head == nullptr)
{
head = (new Node<T>());
head->set(x);
head->set_next(nullptr);
return;
}
Node<T> *temp = head;
while (temp->get_next() != nullptr)
{
temp = temp->get_next();
}
temp->set_next(new Node<T>());
(temp->get_next())->set(x);
(temp->get_next())->set_next(nullptr);
}
void Add(T x)
{
Node<T> *temp = head;
while (temp != nullptr)
{
temp = temp->get_next();
}
temp = new Node<T>();
temp->set(x);
temp->set_next(nullptr);
}
第一个工作正常,第二个是段错误。这是为什么?我认为结果应该是一样的,只是想让代码更短一点,但我显然遗漏了一些东西
解决方案
推荐阅读
- python - 在 python heroku 部署期间无法安装依赖项
- python - 从 2D numpy 数组中删除特定行值数组的快速方法
- java - Mac JAVA 上不显示窗口
- r - 通过每次添加固定值来创建重复的值范围
- typescript - knexjs innerjoin 返回列
- c# - C# - 使用 GroupBy 的 LINQ Lambda 表达式 - 为什么嵌套验证效率如此低下?
- java - Fizz Buzz Cucumber Java
- python - 从两个熊猫数据帧(纬度和经度)映射最近的值
- python - 在 Python 中删除具有一定数量元素的列表
- csv - Netlogo:使用 .csv 作为栅格值的交叉引用