文章

167

粉丝

0

获赞

1

访问

14.8k

头像
2009年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月17日 22:43
阅读数 7


评分及理由

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

学生描述的基本设计思想是通过计算链表长度,然后定位到倒数第k个结点(即正数第len-k+1个结点)。这种方法需要遍历链表两次(一次计算长度,一次定位结点),而标准答案要求尽可能高效(一趟扫描)。虽然思路正确,但效率不如标准答案的一趟扫描方法。根据评分说明,若采用两遍扫描,最高给10分(即总分不超过10分),但本小题只针对设计思想部分。设计思想描述清晰,但未达到最优效率,扣1分。得4分。

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

学生详细实现步骤与设计思想一致:先计算链表长度len,再通过循环定位到第len-k+1个结点。步骤描述正确,但同样未实现一趟扫描,效率较低。步骤部分扣1分。得4分。

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

学生代码实现存在多处错误:
1. 函数`listlen`未返回长度值(缺少`return len;`),导致逻辑错误。
2. 函数`fA`(或`A`)中使用了未定义的变量`L`(应为参数`B`),并且`len = len(B)`写法错误(应为`len = listlen(B)`)。
3. 循环逻辑有缺陷:当`count != len-k+1`时移动指针,但一旦相等就返回,但若k值无效(如k>len)时,循环可能无法处理(例如,若k>len,则`len-k+1`为负数,循环不会进入else分支,且可能访问空指针)。
4. 函数未处理查找失败的情况(应返回0),且成功时应返回1而非直接返回data值(题目要求返回1并输出data值,但代码中返回data值且类型为int,但实际data类型可能是其他类型)。
5. 代码中函数名不一致(`fA`和`A`),且未输出data值(直接返回data值不符合题目要求)。
这些逻辑错误导致代码无法正确运行。根据评分说明,代码部分最多扣5分,但由于存在严重逻辑错误,扣3分。得2分。

题目总分:4+4+2=10分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发