文章
296
粉丝
0
获赞
0
访问
21.8k


评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的基本设计思想与标准答案完全一致,都是使用辅助数组记录已出现的绝对值,通过一趟扫描链表实现删除重复绝对值结点的功能。思路正确且描述清晰。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义正确,使用了typedef定义结构体类型,包含data和next(标准答案中为link,但next是常见的命名,不扣分)两个成员。
(3)得分及理由(满分8分)
得分:6分
理由:算法整体思路正确,但存在以下问题:
1. 函数返回类型为int,但实际没有正确返回有意义的值,且题目要求是删除操作,应该返回void(扣1分)
2. 数组B的大小为n,但应该为n+1,因为|data|≤n,可能的绝对值范围是0到n(扣1分)
3. 当p->data≥n时直接return 0,这会提前结束函数,应该处理这种情况而不是直接返回(扣1分)
4. 缺少对辅助数组B的初始化(虽然代码中有int B[n] = 0,但这在C语言中只能初始化第一个元素,不是全部初始化)(扣1分)
5. 缺少释放辅助空间的代码(扣1分)
算法核心逻辑正确,但上述实现细节存在问题。
(4)得分及理由(满分2分)
得分:1分
理由:时间复杂度O(m)正确,但空间复杂度max(O(m), O(n))表述不准确,应该是O(n),因为辅助数组大小与n相关,与m无关(扣1分)。
题目总分:3+2+6+1=12分
登录后发布评论
暂无评论,来抢沙发