GESP 五级 · GESP 202506 C++ 五级 第 2 题

选择题 · 答案 C · 考点:链表

← 整套速查表 GESP 五级 全部真题

题目

下面 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

考点

链表 讲解 →链表 真题汇总 →

解题思维

根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。

常见错误

填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。

详细解析(节选)

【考点】双向链表结构|指针有效性检查|边界条件

1. 🎯 考纲定位(考点定位)

本题出自《GESP 大纲》五级「数据结构与算法」模块,属链表操作基础题。命题人卡住绝大多数考生的一个弱点:指针有效性检查——链表为空的判定条件是「头尾指针同时为 nullptr」,但选项 C 试图访问 head.data,却未先判断 head 是否为 nullptr,属于典型的边界陷阱。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断