第20731题
C++实现删除单链表中所有值等于val的节点,空缺处应填入哪段代码?

函数 removeElements 功能为删除单链表中所有结点值等于 val 的结点,并返回新的头结点,链表头结点为 head,代码框架如下:

// 结点结构体
struct Node {
    int val;
    Node* next;
    Node() : val(0), next(nullptr) {}
    Node(int x) : val(x), next(nullptr) {}
    Node(int x, Node *next) : val(x), next(next) {}
};
Node* removeElements(Node* head, int val) {
    Node dummy(0, head); // 哑结点,统一处理头结点
    Node* cur = &dummy;
    while (cur->next) {
        if (cur->next->val == val) {
            _______________________ // 在此填入代码
        }
        else {
            cur = cur->next;
        }
    }
    return dummy.next;
}
A

Node* del = cur; cur = del->next; delete del;

B

Node* del = cur->next; cur->next = del; delete del;

C

Node* del = cur->next; cur->next = del->next; delete del;

D

Node* del = cur->next; delete del; cur->next = del->next;