文章
52
粉丝
0
获赞
0
访问
2.9k
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的基本设计思想与标准答案一致,都是使用辅助数组记录已出现的绝对值,通过一趟扫描链表来实现删除重复绝对值结点的功能。思路正确,描述清晰。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义正确,使用了typedef定义了LNode和LinkList,结构体成员包括data和link,符合题目要求。
(3)得分及理由(满分8分)
得分:6分
理由:算法整体思路正确,但存在以下逻辑错误:
1. 在else分支中,删除结点后执行了"q = p;"和"p = p->link;",这会导致q指向被删除的结点,然后p后移,但q在下一轮循环中可能被错误使用。正确做法应是删除结点后不移动q,仅移动p(通过p = p->link),并释放被删除结点。这里逻辑错误导致链表操作可能出错,扣2分。
2. 代码中未正确定义变量k和n,且数组a[n+1]使用变长数组,但n应是函数参数或已知值,这里未体现,但根据上下文可推断是误写,不扣分。
其他部分如数组初始化、绝对值计算、条件判断等正确,故扣除逻辑错误分后得6分。
(4)得分及理由(满分2分)
得分:2分
理由:时间复杂度和空间复杂度分析正确,与标准答案一致。
题目总分:3+2+6+2=13分
登录后发布评论
暂无评论,来抢沙发