leetcode:21. 合并两个有序链表

简介: leetcode:21. 合并两个有序链表

一、题目

 

函数原型:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)

二、思路

合并两个有序链表为一个新的升序链表,只需要遍历两个有序链表并比较结点值大小,依次将较小的结点尾插到新链表即可。

三、代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    struct ListNode *newhead=NULL;//新链表
    struct ListNode *tail=NULL;//新链表尾指针
    struct ListNode *cur1=list1;//遍历指针1
    struct ListNode *cur2=list2;//遍历指针2
    while(cur1&&cur2)
    {
        if(cur1->val<=cur2->val)//选取较小结点尾插
        {
            if(tail==NULL)//尾指针为空,先要将插入的结点作为头结点
            {
                newhead=tail=cur1;
            }
            else
            {
                tail->next=cur1;
                tail=cur1;
            }
            cur1=cur1->next;
        }
        else
        {
            if(tail==NULL)
            {
                newhead=tail=cur2;//尾指针为空,先要将插入的结点作为头结点
            }
            else
            {
                tail->next=cur2;
                tail=cur2;
            }
            cur2=cur2->next;
        }
    }
    if(cur1)//链表1还有剩余结点,尾插到新链表
    {
        if(tail==NULL)
        {
            newhead=tail=cur1;
        }
        else
        {
            tail->next=cur1;
        }
    }
    if(cur2)//链表2还有剩余结点,尾插到新链表中
    {
        if(tail==NULL)
        {
            newhead=tail=cur2;
        }
        else
        {
            tail->next=cur2;
        }
    }
    return newhead;
}




目录
相关文章
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
2月前
|
存储
【合并两个有序数组】LeetCode第88题讲解
【合并两个有序数组】LeetCode第88题讲解
|
4天前
|
索引
每日一题:力扣328. 奇偶链表
每日一题:力扣328. 奇偶链表
12 4
|
5天前
leetcode代码记录(移除链表元素
leetcode代码记录(移除链表元素
10 0
【每日一题】LeetCode——反转链表
【每日一题】LeetCode——反转链表
【每日一题】LeetCode——链表的中间结点
【每日一题】LeetCode——链表的中间结点
|
19天前
|
C++
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
|
28天前
【力扣】148. 排序链表
【力扣】148. 排序链表
|
28天前
|
索引
【力扣】142. 环形链表 II
【力扣】142. 环形链表 II
|
28天前
【力扣】19. 删除链表的倒数第 N 个结点
【力扣】19. 删除链表的倒数第 N 个结点