如何修复这个分割错误
How to fix this segmentation error?
引起错误的行被注释在旁边,我试图从我的链表中删除一个节点,当在要删除的节点旁边设置previous->时,下一个分割错误发生。
void LinkedList::removeNode(int k)
{
Node* pre = NULL;
Node* curr = NULL;
Node* temp = NULL;
pre = head;
curr = head->get_next();
for(int i =1; i<=length; i++)
{
if (i == k)
{
temp = curr->get_next();
pre->set_next(temp); // this line causes segmentation error
if(curr == tail)
{
tail = pre;
}
delete curr;
break;
}
pre = curr;
if(curr->get_next() != NULL)
{
temp = curr->get_next();
curr = temp;
}
}
看起来像你通过链表迭代,但有一些神秘的length
迭代限制,这是不修改节点删除代码…
这里有一些优化的代码:
void LinkedList::removeNode(int k)
{
if (head == NULL)
return;
Node* curr = head;
Node* next = NULL;
int i = 0;
while ((next = curr->get_next()) != NULL) {
if (++i == k) {
curr->set_next(next->get_next());
if (next == tail)
tail = curr;
next->set_next(NULL);
delete next;
length--;
break;
}
curr = next;
}
}
相关文章:
- C++映射分割错误(核心转储)
- 由cin中的字符串中未捕获空白引起的分割错误
- 删除映射和分割错误中的一个过去结束元素
- 在指向函数中读取变量时出现分割错误
- 在链表中的第 n 位插入显示分割错误
- 较高值 n 的分割错误(例如 n=999997)
- 尝试通过memcpy复制大尺寸浮点向量时的分割错误
- 分割错误:向量中的擦除功能
- 向量向量的分割错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 集合布局上的 Qt 分割错误
- 高达20亿的筛子会产生分割错误
- 对向量使用推回函数时的分割错误
- 绘制精灵会导致分割错误
- 将矢量的整数内容打印为字符串会导致分割错误
- 分割错误:使用向量时为 11 c++
- 结构的分割错误错误