欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递增次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

程序员文章站 2022-05-06 11:38:12
...

代码:

void mergeList(LinkList* L1,LinkList* L2){
    //将L2插入到L1中
    LinkList* p = L1->next;;
    LinkList* p2 = L2->next;;
    L1->next = NULL;
    //头插法
    while(p!=NULL && p2!=NULL){
        if(p->data>p2->data){
            //p2头插
            LinkList* p2_next = p2->next;//防短链
            p2->next = L1->next;
            L1->next = p2;
            p2 = p2_next;
        }else
        {
            //p头插
            LinkList* p_next = p->next;
            p->next = L1->next;
            L1->next = p;
            p = p_next;
        }
    }
    while(p2!=NULL){
            LinkList* p2_next = p2->next;//防短链
            p2->next = L1->next;
            L1->next = p2;
            p2 = p2_next;
    }
    while(p!=NULL){
            LinkList* p_next = p->next;
            p->next = L1->next;
            L1->next = p;
            p = p_next;
    }
}

结果:

假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递增次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

相关标签: A研