Python递归实现:合并排序两个单链表,附代码详解
可以使用递归或迭代的方法来实现合并排序两个单链表。下面是使用递归的方法实现: ```python class ListNode: def __init__(self, value=0, next=None): self.value = value self.next = next def merge(l1: ListNode, l2: ListNode) -> ListNode: if not l1: return l2 if not l2: return l1 if l1.value <= l2.value: l1.next = merge(l1.next, l2) return l1 else: l2.next = merge(l1, l2.next) return l2 # 测试 # 创建链表1: 1->3->5 l1 = ListNode(1) l1.next = ListNode(3) l1.next.next = ListNode(5) # 创建链表2: 2->4->6 l2 = ListNode(2) l2.next = ListNode(4) l2.next.next = ListNode(6) merged_list = merge(l1, l2) # 输出合并后的链表: 1->2->3->4->5->6 while merged_list: print(merged_list.value, end=" ") merged_list = merged_list.next ``` 输出结果: ``` 1 2 3 4 5 6 ``` 以上代码首先定义了链表节点`ListNode`类,其中包含一个值属性`value`和指向下一个节点的指针`next`。然后,定义了`merge`函数,利用递归的方式合并两个链表。函数首先检查是否有一个链表为空,如果是,则直接返回另一个链表。然后,比较两个链表的第一个节点的值,将较小的节点作为合并后的链表的头节点,并递归调用`merge`函数合并剩余的部分。创建两个测试链表,并调用`merge`函数得到合并后的链表,然后遍历输出合并后的链表的值。 ######[AI写代码神器 | 848点数解答 | 2024-06-04 16:16:40]
- 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
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)251
- 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