美文网首页数据结构与算法整理
链表-合并两个升序链表

链表-合并两个升序链表

作者: 茶还是咖啡 | 来源:发表于2020-03-05 08:15 被阅读0次

两个链表升序有序,合并两个升序链表

eg:
L1: 1->1->2->3->5
L2: 3->4->5->6->6
合并后:
1->1->2->3->3->4->5->5->6->6

该题可以想象成创建一个新的链表,而节点是从两个旧链表中选择的过程。

  1. 通过比较两个链表头结点的小,确定本次使用的节点为h1的头结点,进行头删,然后尾插到新的链表中。


  2. 通过比较两个链表头结点的小,确定本次使用的节点为h1的头结点,进行头删,然后尾插到新的链表中。


  3. 重复上面的动作,直至其中一根链表为空,将不为空的链表直接尾插到新的链表中。


code

ElemSN* mergeLinkList(ElemSN *h1,ElemSN *h2){
    if(h1==NULL){
        return h2;
    }
    if(h2==NULL){
        return h1;
    }
    ElemSN *p=NULL,*tail=NULL,*hn=NULL;
    while (h1&&h2) {
        if(h1->data>h2->data){
            p=h1;
            h1=h1->next;
        }else{
            p=h2;
            h2=h2->next;
        }
        if(hn==NULL){
            hn = p;
            tail = p;
        }else{
            tail->next=p;
            tail = tail->next;
        }
    }
    if(h1!=NULL){
        tail->next=h1;
    }else{
        tail->next=h2;
    }
    return hn;
}

相关文章

  • 2020/10/15合并两个有序链表

    leetCode题目-合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个...

  • LeetCode 热门100题之合并两个有序链表

    合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示...

  • 【LeetCode】21.合并两个有序链表

    题目描述 21.合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有...

  • LeetCode刷题分类之链表21. 合并两个有序链表

    21 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的...

  • LeetCode刷题分类之链表21 合并两个有序链表

    21 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的...

  • LeetCode 每日一题 [20] 合并两个有序链表

    LeetCode 合并两个有序链表 [简单] 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两...

  • 合并两个有序链表

    合并两个有序链表: 难度:简单 要求:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链...

  • 链表题目合集

    23. 合并K个升序链表 给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并...

  • 21.合并两个 有序链表

    题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题解 合并...

  • 21:合并两个有序链表

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解题思路1:链表...

网友评论

    本文标题:链表-合并两个升序链表

    本文链接:https://www.haomeiwen.com/subject/lckplhtx.html