合并两个单链表(链表方式)

Posted 要有梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个单链表(链表方式)相关的知识,希望对你有一定的参考价值。

假设头指针为La、Lb单链表分别为线性表LA、LB的存储结构,现在要合并La、Lb得到单链表Lc

void MergeList_L(LinkList La, LinkList Lb, LinkList Lc){
    //已知La、Lb的元素按值非递减排列
    //归并La、Lb得到单链表Lc,Lc的元素也是按值非递减排列的
    LinkList pa,pb,pc;
    pa = La->next;
    pb = Lb->next;
    Lc = pc = La;//用La的头结点作为Lc的头结点
    while(La && Lb){
        if(La->data<=Lb->data){
            pc->next = pa;
            pc = pa;
            pa = pa->next;
        }
        else{
            pc->next = pb;
            pc = pb;
            pb = pb->next;
        }
    }
    pc->next = pa?pa:pb;//插入剩余段 
    free(Lb); 
}

 

以上是关于合并两个单链表(链表方式)的主要内容,如果未能解决你的问题,请参考以下文章

合并两个有序单链表

c语言程序链表问题

单链表查找最大值两个递增的链表合并并且去重

算法总结之 合并两个有序的单链表

合并两个有序的单链表,合并之后的链表依然有序出现频率高

合并有序两个单链表,合并后链表依然有序