文章

91

粉丝

0

获赞

4

访问

9.5k

头像
2019年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年10月9日 22:37
阅读数 306


评分及理由

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

学生答案的基本设计思想与标准答案一致:先找到链表的中点(通过计算长度并移动指针),将链表分为两部分,然后反转后半部分,最后合并两个链表。思路正确且清晰,得3分。

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

学生代码存在以下逻辑错误:
1. 在计算链表长度时,指针p初始指向head,但循环中p = p->next,最终p指向尾结点,但后续使用p时未重置,直接用于寻找中点,可能导致指针错误。标准答案使用快慢指针法,无需计算长度,效率更高且避免额外遍历。
2. 在反转后半部分链表时,代码中q初始为NULL,但立即执行q = malloc(sizeof(NODE)),这会导致q成为新头结点,但后续操作中未正确处理头结点连接,可能造成内存泄漏或逻辑错误。标准答案直接在原链表结构上操作,无需额外分配头结点。
3. 合并链表时,循环条件为q->next != NULL,但若后半部分链表长度小于前半部分(如n为奇数),会提前终止合并,导致部分结点未被处理。标准答案确保所有结点被合并。
4. 代码中未处理链表为空或只有一个结点的边界情况,可能引发运行时错误。
基于以上逻辑错误,扣4分。代码整体结构符合设计思想,但实现细节有误,得4分。

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

学生正确指出时间复杂度为O(n),与标准答案一致,得2分。

题目总分:3+4+2=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发