我正在尝试编写一个函数,该函数使用由邻接列表表示的图形进行一些计算,但是我得到了一个我没有得到的分段错误错误。 基本上我首先“删除”一个节点,然后再重新插入它。 这是我的代码:
int AdjList::bruteForce (node** list) {
int pointerIndex;
node* help;
node* help2;
for (int i=0; i<boundary; i++) {
huidigScore = 0;
help2 = list[i];
help = help2;
help2 = help2->next;
while (help2->next != NULL) {
help->next = help2->next;
help2->next = NULL;
pointerIndex = help2->number;
help2->next = help->next;
help->next = help2;
help2 = help2->next;
}
}
}
和列表初始化:
node** list;
node* help;
node* help2;
list = new node*[boundary];
for (int i=0; i<boundary; i++) {
list[i] = new node;
help = list[i];
help->next = NULL;
help->number = 0;
}
提前致谢。
答案 0 :(得分:2)
在初始化帮助中 - &gt; next始终设置为null,因此当涉及到
时help2 = help2->next;
while (help2->next != NULL) {
help 2为NULL并尝试访问help2-&gt; while循环导致segfault
编辑
同样的事情发生在for循环的最后一次迭代中,当i等于boundary-1时,help2将保持指向列表中最后一个值的指针,其中help2-&gt; next为NULL,一切都将通过前面描述的场景。通过我在这里再次猜测下一个设置为NULL的列表中的最后一个条目。