文章
21
粉丝
0
获赞
0
访问
998

评分及理由
(1)得分及理由(满分3分)
学生设计思想基本正确:先找到链表中间位置,将后半段反转,再交替插入。但描述不够精确,未明确说明找下中位数以及奇偶情况处理,不过核心思路符合标准答案,因此得2分。
(2)得分及理由(满分8分)
代码逻辑存在多处关键错误:
① 找中间结点时仅用简单循环到n/2,未使用快慢指针,但考虑到学生可能通过传入n完成,此处不严格扣分;但后续反转和合并逻辑错误。
② 头插法反转部分:while(q->next != NULL) 循环条件导致最后一个结点未被反转(当q为最后一个结点时,q->next为NULL,循环结束,最后一个结点漏掉),此处扣2分。
③ 合并部分:while(p != NULL) 中使用的p是反转后的头结点(原中间结点后的第一个结点),但此时代码逻辑混乱:q = L->next 后,合并时q->next = p 导致链表出现环,同时p->next = q->next 错误的自指,完全不符合交替插入逻辑,此为严重逻辑错误,扣4分。
④ 函数返回类型为int,实际应返回void或修改链表本身,且未处理头结点为空等边界,扣1分。
⑤ 缺少注释,扣1分。
合计扣分:2+4+1+1=8分,本题得分0分。
(3)得分及理由(满分2分)
学生正确说明时间复杂度O(n)、空间复杂度O(1),与标准答案一致,得2分。
题目总分:2+0+2=4分
登录后发布评论
暂无评论,来抢沙发