Python递归实现:将两个有序单链表合并排序
可以通过递归的方式将两个有序的单链表合并为一个有序的单链表。 首先,定义一个ListNode类表示单链表的节点: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next ``` 然后,定义一个mergeTwoLists函数,用于合并两个有序的单链表: ```python def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode: # 如果其中一个链表为空,直接返回另一个链表即可 if not l1: return l2 if not l2: return l1 # 选择头节点较小的链表作为合并后的链表 if l1.val <= l2.val: merged_head = l1 merged_head.next = mergeTwoLists(l1.next, l2) else: merged_head = l2 merged_head.next = mergeTwoLists(l1, l2.next) return merged_head ``` 接下来,可以创建两个有序的单链表,并调用mergeTwoLists函数进行合并排序: ```python # 创建第一个有序链表:1 -> 3 -> 5 l1 = ListNode(1) l1.next = ListNode(3) l1.next.next = ListNode(5) # 创建第二个有序链表:2 -> 4 -> 6 l2 = ListNode(2) l2.next = ListNode(4) l2.next.next = ListNode(6) # 合并排序两个链表 merged_list = mergeTwoLists(l1, l2) # 打印合并后的链表:1 -> 2 -> 3 -> 4 -> 5 -> 6 while merged_list: print(merged_list.val, end=" -> ") merged_list = merged_list.next print("None") ``` 输出结果为:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> None,表示两个有序链表合并排序后的结果。 ######[AI写代码神器 | 899点数解答 | 2024-06-04 16:32:06]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)487
- C++ 实现:按顺序存储并输出战力 1 - 10 守卫数量(DeepSeek | 130点数解答 | 2026-01-17 14:11:22)67
- C++实现按战力顺序输出守卫数量(字节豆包 | 185点数解答 | 2026-02-25 22:33:20)40
- C++实现按战力顺序输出守卫数量(字节豆包 | 497点数解答 | 2026-03-20 20:01:06)17
- 小核桃存储守卫战力数量的Python程序实现(字节豆包 | 150点数解答 | 2026-04-03 19:47:58)21
- 使用C++实现存储守卫战力并按顺序输出的程序(字节豆包 | 224点数解答 | 2026-04-12 19:13:22)13
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)369
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)439
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)434
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)274
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)268
- 轻松补全代码:实现三个数组合并的秘诀(GPT | 44点数解答 | 2024-05-20 22:24:51)312