数据结构与算法之合并两个有序链表

数据结构与算法之合并两个有序链表

合并两个有序链表

题目

想法

使用头插法合并

代码

void mergeSortedList(LinkedList l1, LinkedList l2) {  
    LNode *l1Head = l1;  
    LNode *l2Head = l2;  
    LNode *mergedList = (LNode *) malloc(sizeof(LNode));  
    LNode *curMeredNode = mergedList;  
    while (l1Head && l2Head) {  
        while (l1Head->data < l2Head->data) {  
            //头插法  
            curMeredNode->next = l1Head->next;  
            l1Head->next = curMeredNode;  
            //始终让他在头的位置  
            LNode *next = curMeredNode->next;  
            curMeredNode = l1Head;  
            l1Head = next;  
        }  
        while (l1Head->data >= l2Head->data) {  
            //头插法  
            curMeredNode->next = l2Head->next;  
            l2Head->next = curMeredNode;  
            //始终让他在头的位置  
            LNode *next = curMeredNode->next;  
            curMeredNode = l2Head;  
            l2Head = next;  
        }  
    }  
    //合并剩余结点  
    while (l1Head) {  
        //头插法  
        curMeredNode->next = l1Head->next;  
        l1Head->next = curMeredNode;  
        //始终让他在头的位置  
        LNode *next = curMeredNode->next;  
        curMeredNode = l1Head;  
        l1Head = next;  
    }  
    while (l2Head) {  
        //头插法  
        curMeredNode->next = l2Head->next;  
        l2Head->next = curMeredNode;  
        //始终让他在头的位置  
        LNode *next = curMeredNode->next;  
        curMeredNode = l2Head;  
        l2Head = next;  
    }  
}

猜你喜欢

转载自blog.csdn.net/qq_45074341/article/details/126378727
今日推荐