文章

149

粉丝

0

获赞

0

访问

55.4k

头像
2019年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年11月24日 17:48
阅读数 237


评分及理由

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

学生作答给出了基本正确的设计思想:使用快慢指针找到链表中点,将后半部分反转,然后合并两个链表。思路与标准答案一致,但描述中存在一些不准确之处:
- "P每次向前移动两步,q每次向前移动一步" 正确
- "当P指向空结点时,q停止移动" 表述不够精确,应该是当快指针无法再前进两步时停止
- "将q后面的结点用头插法插入新的表头结点h1中" 表述基本正确,但"头插法"实际上就是反转操作
- "将h中的结点间隔插回原头结点L的链表中" 表述基本正确
由于核心思路正确,扣0.5分,得2.5分。

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

代码实现存在以下问题:
1. 严重错误:`NODE *r, *h; h->next = NULL;` - h未分配内存就直接使用,会导致程序崩溃
2. 快慢指针逻辑不够完善:在while循环中使用了break,但标准做法应该是在循环条件中判断
3. 反转部分逻辑:`P = q->next;` 在循环内又被重新赋值,逻辑混乱
4. 合并部分:变量名不一致(p和P混用),逻辑不够清晰
5. 缺少必要的注释说明
6. 函数返回类型与题目要求不符(题目要求void类型)
基于以上严重逻辑错误,扣4分,得4分。

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

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

题目总分:2.5+4+2=8.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发