文章

71

粉丝

0

获赞

2

访问

2.8k

头像
2012年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月2日 16:27
阅读数 13


评分及理由

(1)得分及理由(满分4分)

学生答案的基本设计思想描述正确:先求链表长度,然后让长链表的指针先移动,使剩余长度与短链表相同,然后同步移动直到找到共同结点。这与标准答案思路一致。得4分。

(2)得分及理由(满分8分)

学生代码实现了基本思想,但存在以下问题:
1. 代码中使用了未定义的函数`Length`,但在第二次识别中给出了`Length`函数的实现,该函数正确,因此不扣分。
2. 在第一个for循环中,条件`for(int i = len1; len1 > len2; len1--)`有误,应为`for(; len1 > len2; len1--)`,但根据上下文判断是识别错误(多写了`int i = len1`),且逻辑正确,因此不扣分。
3. 在第二个for循环中,同样有多余的`int i = len2`,判断为识别错误,不扣分。
4. 函数返回类型为`int`,但应返回结点指针(或地址),标准答案返回`LinkNode*`,这里返回`int`或结点指针不匹配,但根据上下文判断可能是识别错误(学生意图返回指针,但代码写为`return P`,而函数声明为`int`),这是一个逻辑错误,扣2分。
5. 循环条件`while (P != NULL)`应改为`while (P != NULL && P != q)`或类似,但学生代码中在循环内判断`if (P == q)`,逻辑正确,只是效率稍低(多一次判断),但不影响正确性,因此不扣分。
6. 学生代码使用了`func`作为函数名,未按题目要求命名,但这不是关键错误,不扣分。
综上,扣2分,得6分。

(3)得分及理由(满分1分)

学生答案的时间复杂度为O(n),但应更精确为O(len1+len2)或O(max(len1,len2))。不过O(n)在上下文中有可能表示线性复杂度,且与标准答案一致,因此不扣分。得1分。

题目总分:4+6+1=11分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发