数据结构合并两个单链表
时间: 2023-08-16 21:05:36 浏览: 170
可以通过遍历两个链表,逐个将节点添加到新链表的尾部来合并两个单链表。具体步骤如下:
1. 创建一个新链表的头节点,记为 `merged_head`,并初始化为 None。
2. 创建一个指针 `current`,指向 `merged_head`。
3. 遍历第一个链表,将每个节点逐个添加到 `merged_head` 的尾部:
- 将当前节点的值赋给 `current` 的下一个节点。
- 如果 `current` 的下一个节点不为空,则将 `current` 移动到下一个节点。
- 否则,创建一个新节点,并将其赋值给 `current` 的下一个节点。
- 将第一个链表的指针向后移动一位。
4. 遍历第二个链表,将每个节点逐个添加到 `merged_head` 的尾部:
- 将当前节点的值赋给 `current` 的下一个节点。
- 如果 `current` 的下一个节点不为空,则将 `current` 移动到下一个节点。
- 否则,创建一个新节点,并将其赋值给 `current` 的下一个节点。
- 将第二个链表的指针向后移动一位。
5. 返回合并后的链表 `merged_head`。
以下是使用 Python 实现的示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def merge_lists(l1, l2):
merged_head = ListNode() # 创建新链表的头节点
current = merged_head # 当前指针指向新链表的头节点
while l1 or l2:
if l1:
current.next = ListNode(l1.val) # 将l1当前节点添加到新链表
current = current.next # 移动current指针
l1 = l1.next # 移动l1指针
if l2:
current.next = ListNode(l2.val) # 将l2当前节点添加到新链表
current = current.next # 移动current指针
l2 = l2.next # 移动l2指针
return merged_head.next # 返回合并后的链表的头节点
```
这样,你可以通过调用 `merge_lists` 函数来合并两个单链表。
阅读全文