“抛出异常:读取访问冲突。this-> head为nullptr。”

时间:2020-04-03 00:07:26

标签: c++

我正在编写从链接列表中删除所有其他元素的代码。当列表中有足够的元素时,它将起作用。当没有足够的元素时,我仍在尝试使代码通过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;
}

1 个答案:

答案 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