文章
118
粉丝
0
获赞
0
访问
48.2k

评分及理由
(1)得分及理由(满分3分)
得分:0分
理由:学生的设计思想存在严重逻辑错误。题目要求删除绝对值相等的结点,但学生描述的是通过两个指针比较相邻结点的值是否相等,这与题目要求的"绝对值相等"不符。而且学生的算法只能检测相邻结点的重复,无法检测非相邻结点的重复(如链表1->2->1,第二个1不会被删除)。基本设计思想完全偏离题目要求。
(2)得分及理由(满分2分)
得分:1分
理由:学生给出了基本正确的单链表结点定义,使用了typedef和struct,但存在语法错误:在C/C++中应该是"struct Link *link"而不是"Link *link"。考虑到可能是识别错误,给予1分。
(3)得分及理由(满分8分)
得分:0分
理由:算法实现存在多处严重错误:
1. 算法逻辑错误:只能检测相邻结点的重复,无法处理非相邻结点的重复
2. 未处理绝对值:题目要求比较绝对值,但代码直接比较data值
3. 指针使用错误:q指针始终指向head,p指针移动但q指针也移动,逻辑混乱
4. 删除操作不完整:只修改了指针,没有释放被删除结点的内存
5. 边界条件处理不当:对空链表或单结点链表的处理可能存在问题
(4)得分及理由(满分2分)
得分:0分
理由:学生分析的时间复杂度O(n)和空间复杂度O(1)是基于错误的算法得出的,与题目要求的正确算法不符。正确的算法应该是时间复杂度O(m),空间复杂度O(n)。
题目总分:0+1+0+0=1分
登录后发布评论
暂无评论,来抢沙发