下面函数用“哑结点”统一处理删除单向链表中的头结点与中间结点。横线处应填( )。
struct Node{
int val;
Node* next;
Node(int v):val(v),next(nullptr){}
};
Node* eraseAll(Node* head, int x){
Node dummy(0);
dummy.next = head;
Node* cur = &dummy;
while(cur->next){
if(cur->next->val == x){
Node* del = cur->next;
________
delete del;
}else cur = cur->next;
}
return dummy.next;
}根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】链表操作|指针重连
本题对应《GESP 考试大纲》五级「数据结构与算法」模块中单向链表的基本操作。命题人刻意选择「删除节点」这一经典场景,因为五级考生最容易在链表指针操作上栽跟头——要么忘记重连导致断链,要么误删哑结点破坏返回值。这道题就是专门卡住「指针关系更新」这个知识盲区的。