用链表实现两个数组的合并
时间: 2023-07-17 15:57:45 浏览: 95
实现两个链表的合并
可以通过链表来实现两个数组的合并。首先,我们需要定义一个链表节点的结构,包含一个值和指向下一个节点的指针。
然后,我们可以使用两个指针分别指向两个数组的头部。比较两个指针所指向的值,将较小的值添加到新的链表中,并将指针向后移动一位。重复这个过程直到其中一个数组遍历完毕。
最后,将剩余的数组元素添加到新链表的末尾。
下面是一个示例代码:
```python
class Node:
def __init__(self, val):
self.val = val
self.next = None
def merge_lists(arr1, arr2):
# 创建一个虚拟头节点
dummy = Node(0)
curr = dummy
# 初始化两个指针
p1, p2 = 0, 0
# 遍历两个数组
while p1 < len(arr1) and p2 < len(arr2):
if arr1[p1] <= arr2[p2]:
curr.next = Node(arr1[p1])
p1 += 1
else:
curr.next = Node(arr2[p2])
p2 += 1
curr = curr.next
# 将剩余元素添加到链表末尾
while p1 < len(arr1):
curr.next = Node(arr1[p1])
p1 += 1
curr = curr.next
while p2 < len(arr2):
curr.next = Node(arr2[p2])
p2 += 1
curr = curr.next
return dummy.next
```
使用示例:
```python
arr1 = [1, 3, 5]
arr2 = [2, 4, 6]
head = merge_lists(arr1, arr2)
# 遍历链表并打印结果
while head:
print(head.val)
head = head.next
```
上述代码会输出:1 2 3 4 5 6,表示两个数组的合并结果。
阅读全文