GESP 五级 · GESP 202403 C++ 五级 第 15 题

选择题 · 答案 A · 考点:链表、函数

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

题目

假设给定链表为:$1 \rightarrow 3 \rightarrow 5 \rightarrow 7 \rightarrow \text{nullptr}$。若调用 searchValue(head, 5),函数返回值为( )。

int searchValue(ListNode* head, int target) {
    while (head != nullptr) {
        if (head->val == target) {
            return 1;
        }
        head = head->next;
    }
    return 0;
}
答案:A

考点

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

解题思维

图的存储方式:邻接矩阵(O(n²)空间,适合稠密图)、邻接表(O(n+m)空间,适合稀疏图)。

常见错误

有向完全图边数为n(n-1),无向完全图边数为n(n-1)/2。简单图不含自环和重边。

详细解析(节选)

【考点】链表遍历|函数参数与返回值|循环条件控制

【解题思维】 函数签名已明示返回类型为int,目标值5在链表第三个节点。循环逐节点检查:第一个节点值1≠5,移动指针;第二个节点值3≠5,移动指针;第三个节点值5=5,满足条件立即return 1。这是链表线性搜索的标准流程——找到即停,没找到才遍历完返回0。

【陷阱拆解】 B选项(返回0)是典型误判:把"没找到"当成默认结果,忽略了函数在找到时提前退出的机制;C选项(死循环)属常识性错误,循环条件head != nullptr配合head = head->next保证必然终止;D选项(返回-1)是语义陷阱——命题人故意用常见返回值混淆视听,但代码写的是1不是-1。若只记"搜索函数返回0/1"而不读函数体,必选错。

【反命题思维】 把目标改成7,函数仍返回1,可迁移出的通法是:链表遍历类题目只考核"是否找到"而非"找到在哪",除非题目明确要求返回索引。刷到类似题先问自己:返回值代表什么含义?若题目要求返回位置,代码必须加计数器或改用带返回值的结构体,否则就是坑。

同考点真题

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