程序员代码面试指南 2.19:合并两个有序的单链表

https://www.nowcoder.com/practice/98a51a92836e4861be1803aaa9037440

1、思路

  • 同时遍历两条有序链表,将较少的节点接到head之后;

  • 当一条链表遍历完毕后,直接将另一条链表剩余部分全部接在后面即可。

2、代码

list_node * merge_list(list_node * head1, list_node * head2)
{
    list_node *head = new list_node(), *p = head;

    while (head1 != nullptr && head2 != nullptr)    //两条链表都不为空时
    {
        if (head1->val < head2->val)                //每次选择较小的节点
        {
            p = p->next = head1;
            head1 = head1->next;
        }
        else
        {
            p = p->next = head2;
            head2 = head2->next;
        }
    }

    if (head1 != nullptr) p->next = head1;          //判断两条链表是否有剩余
    if (head2 != nullptr) p->next = head2;

    return head->next;
}

主要是为左程云的《程序员代码面试指南》这本书改写C++版的题解。

全部评论

相关推荐

05-16 21:54
已编辑
门头沟学院 前端工程师
蓝曦111:我也是25届,这是第二次被裁了,毕业没到一年就失业两次,两次都是公司问题。第一家才转正一个月,跟我说公司拿不到项目结款没办法,赔了一个月;第二个公司连工资都发不出来了,赔偿更别想了,我算是认命了,这条路也不知道能走多远走多久,不过生活还是要继续的,走一步看一步吧
当你面对裁员会如何?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务