将两个单循环链表合并
时间: 2024-10-10 09:08:56 浏览: 24
逆转交替合并两个链表的解析与实现
将两个单循环链表合并是指将这两个链表连接在一起,形成一个新的链表,其中新链表的第一个节点是原两个链表的第一个节点按顺序排列后的第一个。可以采用迭代或递归的方式来解决这个问题:
**迭代法:**
1. 定义一个新的头指针,初始指向None。
2. 比较两个链表当前节点,将较小的节点添加到新链表并移动指针,直到其中一个链表结束。
3. 将另一个未结束链表剩余的部分添加到新链表。
**伪代码示例:**
```python
def merge_lists(head1, head2):
dummy = ListNode(0) # 创建虚拟头节点
current = dummy
while head1 and head2:
if head1.val <= head2.val:
current.next = head1
head1 = head1.next
else:
current.next = head2
head2 = head2.next
current = current.next
current.next = head1 or head2 # 添加剩余链表
return dummy.next
```
**递归法:**
1. 如果一个链表为空,则返回另一个链表。
2. 否则,比较两个链表的第一个节点值,选择较小的节点作为结果的新节点,并递归地处理剩下的部分。
3. 当两个链表都遍历完后,将它们的最后一个节点链接起来。
**递归伪代码:**
```python
def merge_lists_rec(head1, head2):
if not head1:
return head2
elif not head2:
return head1
elif head1.val <= head2.val:
head1.next = merge_lists_rec(head1.next, head2)
return head1
else:
head2.next = merge_lists_rec(head1, head2.next)
return head2
```
阅读全文