重点注意以下指针的初始化赋值,非常重要
for(int i=1; i<len ;i<<=1)
{
auto cur = res.next; //这里必须这样赋值,不可赋值=head,因为head是指向一个固定的结点块,这个块的位置随着归并不断进行变化;而该函数重点就是每次for循环初试都是用res.next赋值,在上一次进行归并的基础上继续归并
auto tail = &res; //这里是直接引用res
while(cur)
{
auto left=cur;
auto right=cut(left,i);
cur =cut(right,i);
tail->next=merge(left,right);
while(tail->next)
{
tail=tail->next;
}
}
}
return res.next;
leetcode148. 排序链表
最新推荐文章于 2023-03-01 00:00:37 发布