文章
302
粉丝
0
获赞
15
访问
51.4k

评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的基本设计思想与标准答案一致,都是使用大小为n的辅助数组记录已出现的绝对值,通过遍历链表进行删除操作。思路正确完整,得满分。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义正确,与标准答案一致,得满分。
(3)得分及理由(满分8分)
得分:6分
理由:算法整体思路正确,但存在以下逻辑错误:
1. 在else分支中,删除结点后执行了两次移动操作(p = p->link; q = q->link;)和两次free操作,这会导致逻辑错误和内存访问错误。正确的做法应该是删除结点后只移动q指针,p指针保持不变。
2. 辅助数组大小应为n+1,因为|data|≤n,数组索引范围应为0到n,而学生代码中使用A[n]只能索引0到n-1,存在数组越界风险。
3. 代码中null应改为NULL。
扣分:逻辑错误扣2分(主要扣分点在于删除结点的错误操作),其他小问题不扣分。
(4)得分及理由(满分2分)
得分:1分
理由:时间复杂度分析正确为O(n),但空间复杂度分析不够准确。辅助数组大小应为O(n),但学生写的是O(n),考虑到可能是表述问题,扣1分。
题目总分:3+2+6+1=12分
登录后发布评论
暂无评论,来抢沙发