已知两个单链表a, 和b, 节点值为整数,链表中节点按升序排列,线编写代码,将二者合
时间: 2023-09-10 07:01:58 浏览: 125
要将两个单链表合并,可以使用双指针的方法来实现。
假设两个链表分别为a和b,有指针pa和pb分别指向a和b的头结点。
先创建一个新链表result,并创建一个指针指向result的头结点,命名为p。
然后,判断pa和pb指针所指的节点的值的大小。
- 若pa指向的节点值小于等于pb指向的节点值,将当前节点连接到result的后面,并将pa指针往后移动一位。
- 反之,将pb指向的节点连接到result的后面,并将pb指针往后移动一位。
重复以上步骤,直到其中一个链表的节点全部遍历完。再将未遍历完的链表剩下的节点连接到result的后面。
最后返回result链表的头结点即可。
以下是示例代码:
```
def merge_sorted_lists(a, b):
result = ListNode(-1) # 创建一个新链表result
p = result # 创建指针p指向result的头结点
pa = a # 指针pa指向链表a的头结点
pb = b # 指针pb指向链表b的头结点
while pa and pb:
if pa.val <= pb.val:
p.next = pa # 当前节点连接到result的后面
pa = pa.next # pa指针往后移动一位
else:
p.next = pb # 当前节点连接到result的后面
pb = pb.next # pb指针往后移动一位
p = p.next
if pa:
p.next = pa # 将未遍历完的链表a的剩下节点连接到result的后面
if pb:
p.next = pb # 将未遍历完的链表b的剩下节点连接到result的后面
return result.next # 返回result链表的头结点
```
这样,我们就将两个单链表合并成一个按升序排列的链表。
阅读全文