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;
}
相关推荐
im_AMBER14 分钟前
Leetcode 115 分割链表 | 随机链表的复制
数据结构·学习·算法·leetcode
VekiSon22 分钟前
Linux内核驱动——设备树原理与应用
linux·c语言·arm开发·嵌入式硬件
王老师青少年编程23 分钟前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第2题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
夏鹏今天学习了吗24 分钟前
【LeetCode热题100(99/100)】柱状图中最大的矩形
算法·leetcode·职场和发展
BlackQid36 分钟前
深入理解指针Part5——回调函数及应用
c语言
sin_hielo44 分钟前
leetcode 110
数据结构·算法·leetcode
日拱一卒——功不唐捐1 小时前
字符串匹配:暴力法和KMP算法(C语言)
c语言·算法
老鼠只爱大米1 小时前
LeetCode经典算法面试题 #78:子集(回溯法、迭代法、动态规划等多种实现方案详细解析)
算法·leetcode·动态规划·回溯·位运算·子集
执着2591 小时前
力扣hot100 - 199、二叉树的右视图
数据结构·算法·leetcode
cpp_25011 小时前
P8448 [LSOT-1] 暴龙的土豆
数据结构·c++·算法·题解·洛谷