文章
62
粉丝
0
获赞
0
访问
10.0k
(1)
通过两个指针*i和*j,i从1到n/2,j从n到 n/2 + 1,将j所指向的节点依次插入到i之后。
(2)
node *Sort(node *head)
{
if (head == nullptr || head->next == nullptr) {
return;
}
node *i = head->next;
// i 之后如果还存在节点
while (i->next != nullptr) {
// 尝试查找一个可以插入在i之后的p节点
node *j = i->next;
if (j->next == nullptr) {
break;
}
// 找到需要插在i->next的节点的prev节点
while(j->next->next != nullptr) {
j = j->next;
}
// 将p插入到i和i->next之间
node *p = j->next;
p->next = i->next;
i->next = p;
j->next = nullptr;
i = p->next;
}
return head;
}
(3)
时间复杂度O(n^2)。
评分及理由
(1)得分及理由(满分3分)
得分:1分
理由:学生的基本设计思想描述较为模糊,提到了通过两个指针i和j进行操作,但未明确说明如何找到链表的中点、反转后半部分以及合并两个链表。虽然思路方向正确(涉及节点插入),但缺乏关键步骤的清晰描述...
登录后发布评论
暂无评论,来抢沙发