文章
101
粉丝
38
获赞
0
访问
3.5k

评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生的基本设计思想正确,提出了使用动态数组记录绝对值是否出现过的思路,符合"空间换时间"的思想。但描述中存在逻辑不严谨之处:"先遍历一次链表,将已存在的data对应数组下标元素设为1,后面遇到一样的直接跳过第一次遍历" - 这里"第一次遍历"的表述不够准确,实际上应该是一趟扫描同时完成记录和删除操作。扣1分。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义完全正确,使用了typedef定义结构体和指针类型,语法规范,与标准答案一致。
(3)得分及理由(满分8分)
得分:3分
理由:算法实现存在较多逻辑错误:
1. 函数返回类型应为void而不是LinkList*
2. 数组大小应为n+1而不是m,题目中n是数据范围,m是链表长度
3. 没有对辅助数组进行初始化
4. 删除结点的逻辑错误:当发现重复时,应该删除当前结点而不是跳过
5. 使用了两个指针p和q但逻辑混乱,q的用法不正确
6. 缺少free(q)释放动态数组
7. 外层for循环多余,应该只需要一层while循环
基于以上多个逻辑错误,扣5分。
(4)得分及理由(满分2分)
得分:1分
理由:时间复杂度O(m)正确,但空间复杂度应为O(n)而不是O(m),因为辅助数组大小取决于数据范围n而不是链表长度m。扣1分。
题目总分:2+2+3+1=8分
登录后发布评论
暂无评论,来抢沙发