文章
7
粉丝
0
获赞
0
访问
243
评分及理由
(1)得分及理由(满分3分)
学生答案正确描述了使用辅助数组记录绝对值是否出现过的思想,与标准答案一致。得3分。
(2)得分及理由(满分2分)
学生给出了正确的单链表结点定义,但存在两处小问题:1. "Typedef" 应为 "typedef"(首字母不应大写);2. 标准答案中使用了 "NODE" 和 "PNODE" 的别名定义,而学生使用了 "node" 和 "pnode",但这是等效的。考虑到识别可能产生的误写(如大小写问题),且核心定义正确,不扣分。得2分。
(3)得分及理由(满分8分)
学生代码整体思路正确,但存在一个逻辑错误:在判断 `*(q+m)==1` 的分支中,没有使用 `else`,而是使用了两个独立的 `if` 语句。这会导致当第一个 `if` 条件满足(即 `*(q+m)==0`)并执行 `p = p->link` 后,第二个 `if` 条件(`*(q+m)==1`)也会被检查(因为此时 `*(q+m)` 已被设为1),从而错误地删除刚保留的结点。这是一个严重的逻辑错误,扣3分。其他部分(如辅助数组申请、初始化、绝对值计算、删除操作等)正确。得5分(8-3=5)。
(4)得分及理由(满分2分)
学生第一次识别结果中写的时间复杂度为O(n),但第二次识别结果修正为O(m),空间复杂度O(n)正确。标准答案为O(m)和O(n)。考虑到识别可能产生的误写(第一次将m误写为n),且第二次正确,不扣分。得2分。
题目总分:3+2+5+2=12分
登录后发布评论
暂无评论,来抢沙发