我正在编写从链接列表中删除所有其他元素的代码。当列表中有足够的元素时,它将起作用。当没有足够的元素时,我仍在尝试使代码通过while
循环运行其他选项(添加,删除等)。但是,会弹出一个错误
抛出异常:读取访问冲突。这个-> head是nullptr。
我该如何解决?我提供了以下功能:
void removeEveryOtherNode() {
Chunk* previous = head;
Chunk* pointer = head->next; //error happens here
if (head == NULL) {
cout << "Linked List is empty...Nothing to delete" << endl;
}
else if (pointer == NULL) {
cout << "Not enough elements to delete every other element." << endl;
}
while (previous != NULL && pointer != NULL) {
previous->next = pointer->next;
delete pointer;
previous = previous->next;
if (previous != NULL) {
pointer = previous->next;
}
}
cout << "Removed every other element. Press 4 to display" << endl;
}
答案 0 :(得分:2)
在取消引用头之前,应检查头是否有效
if (head == NULL) {
cout << "Linked List is empty...Nothing to delete" << endl;
return;
}
if (head->next == NULL) {
cout << "Not enough elements to delete every other element." << endl;
return;
}
// then dereference
Chunk* pointer = head->next;
此外,使用nullptr
代替NULL
。