下面 C++ 代码实现双向链表。函数 is_empty() 判断链表是否为空,如链表为空返回 true,否则返回 false。横线处不能填写( )。
// 节点结构体
struct Node {
int data;
Node* prev;
Node* next;
};
// 双向链表结构体
struct DoubleLink {
Node* head;
Node* tail;
int size;
DoubleLink() {
head = nullptr;
tail = nullptr;
size = 0;
}
~DoubleLink() {
Node* curr = head;
while (curr) {
Node* next = curr->next;
delete curr;
curr = next;
}
}
// 判断链表是否为空
bool is_empty() const {
_______________________
}
};根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】双向链表结构|指针有效性检查|边界条件
本题出自《GESP 大纲》五级「数据结构与算法」模块,属链表操作基础题。命题人卡住绝大多数考生的一个弱点:指针有效性检查——链表为空的判定条件是「头尾指针同时为 nullptr」,但选项 C 试图访问 head.data,却未先判断 head 是否为 nullptr,属于典型的边界陷阱。