文章

85

粉丝

0

获赞

2

访问

3.8k

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


评分及理由

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

学生答案中描述的基本设计思想是使用快慢指针,快指针先走k步,然后快慢指针一起走,直到快指针为空,此时慢指针指向倒数第k个结点。这与标准答案的思路一致,且能够通过一趟扫描实现,效率高。因此,得5分。

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

学生答案的详细实现步骤描述较为简略,但核心步骤(定义结构体、定义快慢指针、快指针先走k步后一起走、慢指针所指即为所求)正确,且与标准答案的逻辑一致。虽然步骤描述不够详细(例如未处理k值超过链表长度的情况),但主要步骤正确,因此扣1分,得4分。

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

学生答案的代码实现基本正确,但存在以下问题:
1. 在快指针先走k步的循环中,未检查fast是否为NULL(即k可能大于链表长度),这会导致如果k过大,fast可能为NULL时仍执行fast->link,产生错误。
2. 在while循环后,slow肯定不为NULL(因为list有头结点,且快指针移动后slow至少指向头结点),因此if(slow!=NULL)判断多余,但逻辑上不影响结果。
3. 代码中未处理k为0或负数的情况(但题目中k为正整数,因此可不处理)。
主要错误是未在快指针先走k步时检查NULL,存在潜在风险,因此扣2分,得3分。

题目总分:5+4+3=12分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发