已知带头结点的链表A和B的结点按非递减有序排列。要求将A和B归并成一个新的链表C
时间: 2024-10-06 16:01:28 浏览: 37
合并两个已排序的链表(头节点分别为A和B),可以创建一个新的链表C,并按照升序顺序连接A和B的节点。步骤如下:
1. **初始化**:创建新链表C的头节点,设为`null`,如果A或B任何一个为空,则直接返回另一个作为结果。
2. **遍历**:设置两个指针,分别指向A和B的头节点,以及C的头节点(初始值为`null`)。然后开始循环,直到其中一个链表遍历完。
3. **比较和链接**:
a. 如果当前A的节点值小于或等于当前B的节点值,将其添加到C的后面,并移动A指针到下一个节点。
b. 否则,将B的节点添加到C的后面,并移动B指针到下一个节点。
4. **处理尾部**:当有一个链表遍历完,将另一个链表剩余的部分接到C的尾部。
5. **返回结果**:最后返回链表C的头节点。
这是一个典型的双指针合并链表的问题,Python伪代码可能如下:
```python
def merge_sorted_lists(A, B):
if not A:
return B
elif not B:
return A
if A.val <= B.val:
C.head = A
A = A.next
else:
C.head = B
B = B.next
C.tail = C.head
while A and B:
if A.val <= B.val:
C.tail.next = A
A = A.next
else:
C.tail.next = B
B = B.next
C.tail = C.tail.next
# 如果还有剩下的一个链表未加入,直接接在尾部
if A:
C.tail.next = A
else:
C.tail.next = B
return C.head
```
阅读全文