文章
245
粉丝
6
获赞
4
访问
54.8k

评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的基本设计思想与标准答案一致,都是使用辅助数组记录已出现的绝对值,通过一趟扫描链表实现删除重复绝对值结点的功能。思路正确且完整。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义正确,使用了typedef定义结构体类型和指针类型,虽然字段名用了val而不是data,但这不影响逻辑正确性。
(3)得分及理由(满分8分)
得分:6分
理由:算法整体思路正确,但存在以下逻辑错误:
1. 在删除结点的else分支中,执行删除操作后,代码"p = p->next->next"(第一次识别)或"p = p->next"(第二次识别)都是错误的。删除结点后,p应该保持在当前位置,因为下一个结点已经是新的p->next,不需要再移动p。这会导致跳过结点或访问空指针。
2. 辅助数组未初始化,这是严重的逻辑错误。
3. 函数参数缺少n,MaxSize未定义。
4. 删除结点时使用了C++的delete,但函数声明是C风格。
扣分:逻辑错误较为严重,扣除2分。
(4)得分及理由(满分2分)
得分:2分
理由:时间复杂度和空间复杂度分析正确,都是O(n),与算法实现一致。
题目总分:3+2+6+2=13分
登录后发布评论
暂无评论,来抢沙发