力扣6-合并两个有序链表

embedded/2025/1/16 3:49:41/

一.题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

二.代码

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) 
{if(list1==NULL){return list2;}else if(list2==NULL){return list1;}else if(list1->val<list2->val){list1->next=mergeTwoLists(list1->next,list2);return list1;}else{list2->next=mergeTwoLists(list1,list2->next);return list2;}
}

三.代码解读

  • 如果 list1 为 NULL,说明第一个链表为空,此时直接返回 list2,因为合并后的结果就是第二个链表
  • 如果 list2 为 NULL,说明第二个链表为空,此时直接返回 l1,因为合并后的结果就是第一个链表
  • 接下来比较 list1 和 list2 的当前节点的值(通过 list1->val 和 list2->val):
    • 如果 list1 的当前节点的值小于 list2 的当前节点的值,那么递归调用 mergeTwoLists 函数,将 list1 的下一个节点和 list2 作为新的参数传递进去,并将结果赋值给 list1 的下一个节点(list1->next = mergeTwoLists(list1->next, list2);),然后返回 list1 作为合并后的链表的头节点。
    • 反之,如果 list2 的当前节点的值小于等于 list1 的当前节点的值,那么递归调用 mergeTwoLists 函数,将 list1 和 list2 的下一个节点作为新的参数传递进去,并将结果赋值给 list2 的下一个节点(list2->next = mergeTwoLists(list1, list2->next);),然后返回 list2 作为合并后的链表的头节点。

四.补全代码

​
#include <stdio.h>
#include <stdlib.h>// 定义链表节点结构体
struct ListNode {int val;struct ListNode* next;
};// 合并两个有序链表的函数
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) 
{if (list1 == NULL){return list2;}else if (list2 == NULL){return list1;}else if (list1->val < list2->val){list1->next = mergeTwoLists(list1->next, list2);return list1;}else{list2->next = mergeTwoLists(list1, list2->next);return list2;}
}// 创建新节点
struct ListNode* createNode(int val) {struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));newNode->val = val;newNode->next = NULL;return newNode;
}// 打印链表
void printList(struct ListNode* head) {struct ListNode* curr = head;while (curr!= NULL) {printf("%d ", curr->val);curr = curr->next;}printf("\n");
}// 释放链表内存
void freeList(struct ListNode* head) {struct ListNode* temp;while (head!= NULL) {temp = head;head = head->next;free(temp);}
}int main() {// 创建第一个有序链表: 1 -> 3 -> 5struct ListNode* list1 = createNode(1);list1->next = createNode(3);list1->next->next = createNode(5);// 创建第二个有序链表: 2 -> 4 -> 6struct ListNode* list2 = createNode(2);list2->next = createNode(4);list2->next->next = createNode(6);// 合并两个链表struct ListNode* mergedList = mergeTwoLists(list1, list2);// 打印合并后的链表printf("Merged List: ");printList(mergedList);// 释放内存freeList(mergedList);return 0;
}


http://www.ppmy.cn/embedded/154295.html

相关文章

性能工具之 JMeter ActiveMQ 脚本开发实践

文章目录 一、ActiveMQ环境搭建1.1、控制台环境搭建1.2、控制台配置 二、SpringBoot开发环境搭建三、JMeter脚本二次开发环境搭建 一、ActiveMQ环境搭建 1.1、控制台环境搭建 下载 ActiveMQ 地址为&#xff1a; https://activemq.apache.org/components/classic/download/ 注…

青少年编程与数学 02-006 前端开发框架VUE 17课题、组件深入

青少年编程与数学 02-006 前端开发框架VUE 17课题、组件深入 一、组件注册组件注册全局注册局部注册组件名格式 二、propsPropsProps 声明响应式 Props 解构将解构的 props 传递到函数中传递 prop 的细节Prop 名字格式静态 vs. 动态 Props传递不同的值类型NumberBooleanArrayOb…

【Oracle专栏】group by 和distinct 效率

Oracle相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 1.背景 查阅资料&#xff1a; 1&#xff09;有索引情况下&#xff0c;group by和distinct都能使用索引&#xff0c;效率相同。 2&#xff09;无索引情况下&#xff0c;distinct…

使用 TiDB 的几个优秀 Tips

使用 TiDB 的几个优秀 Tips TiDB 作为一款分布式数据库&#xff0c;具有强大的功能和高可用性&#xff0c;但也因为其分布式架构的特点&#xff0c;使用时有一些需要特别注意的地方。掌握一些技巧和最佳实践&#xff0c;可以帮助你更好地使用 TiDB&#xff0c;提升系统的性能和…

【HarmonyOS Next NAPI 深度探索2】N-API 的工作机制与架构

【HarmonyOS Next NAPI 深度探索2】N-API 的工作机制与架构 如果你听说过 N-API&#xff0c;但还不太了解它的作用和背后的工作机制&#xff0c;那这篇文章会帮你捋清楚它的结构和原理。N-API 是 Node.js 提供的一个强大工具&#xff0c;专门用于开发高性能、可维护的原生模块…

day13-第一次摸底考试题及讲解

老男孩Linux77期第二周测试题&#xff1a; 01&#xff09;请在/opt下创建oldboyedu目录&#xff0c;并在oldboyedu目录下创建dir1到dir5&#xff0c;共5个目录。 方法1&#xff1a; [rootoldboy ~]# mkdir /opt/oldboyedu -p [rootoldboy ~]# mkdir /opt/oldboyedu/dir{1…5}…

《拉依达的嵌入式\驱动面试宝典》—Linux篇(二)_uboot

《拉依达的嵌入式\驱动面试宝典》—Linux篇(二)_uboot 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

【CI/CD构建】关于不小心将springMVC注解写在service层

背景 之前写一个接口的时候没有察觉到将RequestBody这个注解带到service层了。 今天提交代码的时候&#xff0c;插件没有检测到这个低级错误&#xff0c;导致试飞构建连maven编译都过不了&#xff0c;maven找不到程序包org.springframework.web.bind.annotation这个包 结果…