#3520. [GESP202509 五级 C++] 第 2 题

[GESP202509 五级 C++] 第 2 题

函数 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;
}

{{ select(1) }}

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