C++ C++;在单链表中逐个删除节点

C++ C++;在单链表中逐个删除节点,c++,C++,我试图做的是检查值后面的节点是否是特定的数字,如果是,则删除Previouses节点。 比如: 1,2,3,4,5,4 如果下一个节点编号为4,则删除此节点。 1,2,3,4,5,4->1,2,4,4 node* temp = head; while (head != NULL) { if (head->next->number == 4) { delete temp; } head = head->next; } 由于编译器崩溃,此时

我试图做的是检查值后面的节点是否是特定的数字,如果是,则删除Previouses节点。 比如:

1,2,3,4,5,4 如果下一个节点编号为4,则删除此节点。 1,2,3,4,5,4->1,2,4,4

node* temp = head;
while (head != NULL) {
    if (head->next->number == 4) {
        delete temp;
    }
    head = head->next;
}

由于编译器崩溃,此时正处于挣扎状态。

在推进头部之前删除头部:

node *temp = NULL;
while (head->next != NULL) {
    if (head->next->number == 4) {
        temp = head;
    }
    if ( temp == NULL ){
        head = head->next;
    }
    else{ 
        head = head->next->next;
        delete temp;
        temp= NULL:
    }
}

您需要包括您得到的错误。进程返回255@CodeBlocks。仅供参考,您的编译器可能会崩溃,因为您检查了
head=空值
但然后你调用
头->下一步->号码
。所以
head
可能不为空,但您不能保证
head->next=空
除非您显式检查。检查(head->next==NULL)?