C语言 | Leetcode C语言题解之第21题合并两个有序链表

题目:

题解:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 typedef struct ListNode ListNode;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    //如果List1和list2中有一个为空就直接返回另一个链表
    if(list1 == NULL)
    {
        return list2;
    }
    if(list2 == NULL)
    {
        return list1;
    }
    //定义l1,l2指针分别指向list1和list2的头节点
    ListNode* l1, *l2;
    ListNode* newhead, *newtail;
    //给新链表的开辟一个哨兵位
    newhead = newtail = (ListNode*)malloc(sizeof(ListNode));
    l1 = list1,l2 = list2;
    while(l1 && l2)
    {
        if(l1->val <= l2->val)
        { 
            newtail->next = l1;
            newtail = newtail->next;
            l1 = l1->next;
        }
        else
        {
            
            newtail->next = l2;
            newtail = newtail->next;
            l2 = l2->next;
        }
    }
    if(l1)
    {
        newtail->next = l1;
    }
    if(l2)
    {
        newtail->next = l2;
    }
    //新链表的第一个节点是头节点为无效数据,因此返回头节点的next
    return newhead->next;
}
相关推荐
iAkuya1 分钟前
(leetcode)力扣100 60单词搜索(回溯)
算法·leetcode·职场和发展
圣保罗的大教堂5 分钟前
leetcode 3637. 三段式数组 I 简单
leetcode
牛马大师兄25 分钟前
数据结构复习 | 单向链表
c语言·数据结构·笔记·链表
2401_8414956434 分钟前
【LeetCode刷题】对称二叉树
数据结构·python·算法·leetcode·二叉树··递归
飞机和胖和黄40 分钟前
王道考研C语言第五周
c语言·考研·算法
Hello World . .1 小时前
排序算法:常用排序算法
c语言·数据结构·算法·vim·排序算法
秋深枫叶红2 小时前
嵌入式C语言阶段复习——函数
c语言·数据结构·算法
We་ct2 小时前
LeetCode 49. 字母异位词分组:经典哈希解法解析+易错点规避
前端·算法·leetcode·typescript·哈希算法
梵刹古音2 小时前
【C语言】 数组函数与排序算法
c语言·算法·排序算法
枫叶丹42 小时前
【Qt开发】Qt系统(十二)-> Qt视频
c语言·开发语言·c++·qt·音视频