文章
49
粉丝
0
获赞
0
访问
1.8k
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,都采用了辅助数组记录已出现的绝对值,通过一趟扫描链表实现删除重复结点的功能。思路正确且完整。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义正确,包含了data和link两个成员,虽然成员顺序与标准答案略有不同(先link后data),但这不影响数据结构的正确性。
(3)得分及理由(满分8分)
得分:6分
理由:算法整体思路正确,但存在以下逻辑错误:
1. 循环条件错误:while (q->link != NULL)
会导致最后一个结点无法被检查。应改为 while (q != NULL)
或类似处理所有结点的逻辑。
2. 数组声明语法错误:int S[]=(int *)malloc(...)
是不合法的C/C++语法,应改为 int *S = (int*)malloc(...)
。
3. 绝对值函数虽然正确,但题目未要求实现,且可能影响评分(但根据不扣分规则,不扣分)。
扣分说明:循环条件错误导致算法无法正确处理最后一个结点,属于严重逻辑错误,扣2分;数组声明语法错误扣1分。
(4)得分及理由(满分2分)
得分:1分
理由:空间复杂度分析正确(O(n)),但时间复杂度分析不准确。算法实际时间复杂度应为O(m)(m为链表长度),学生写O(n)不够准确,扣1分。
题目总分:3+2+6+1=12分
登录后发布评论
暂无评论,来抢沙发