我正在尝试为链接列表编写一个remove函数,但是得到了一些奇怪的结果。每当我删除不是列表中最后一个节点的节点时,我都可以显示列表数据,直到被删除的节点为止。之后,我得到一组随机数据,程序结束。
在下面的代码中,如果我删除了“删除t;”,行,一切都按预期工作,但是一旦我添加了“删除t;”,线回到,它回到我一直看到的奇怪行为。我尝试过将t设置为等于head的地方,或者删除t的地方,但是无论我做什么,都会得到相同的结果。
void List::remove(int d) {
Node *t, *prev;
if (!head) return;
t = head;
if (head->data == d) {
head = head->next;
delete t;
}
else {
while (t != nullptr && t->data != d) {
prev = t;
t = t->next;
}
if (t) {
prev->next = t->next;
delete t;
}
else {
cout << "value not found" << endl;
}
}
}
我正在使用for循环将整数0-9插入列表。如果然后尝试删除包含数字5的节点,则在尝试显示剩余数据时得到以下输出:
0
1
2
3
4
-572662307
按任意键继续...
我期望的地方:
0
1
2
3
4
6
7
8
9