设计一个人函数将非递增数顺序表LA和LB合并到非递增顺序表LC中
时间: 2024-09-30 08:13:11 浏览: 33
设计一个合并两个非递减有序列表(即非递增数列)的函数,可以采用双指针法。这里假设输入的LA和LB都是链表结构,并且它们已经排序。以下是Python的一个简单示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def merge_sorted_lists(la, lb):
# 创建新链表LC作为结果
lc = ListNode(0)
current = lc
# 使用两个指针分别遍历LA和LB
la_ptr = la
lb_ptr = lb
while la_ptr and lb_ptr:
if la_ptr.val <= lb_ptr.val:
# 如果LA的值小于等于LB,添加LA的节点并移动LA指针
current.next = la_ptr
la_ptr = la_ptr.next
else:
# 否则,添加LB的节点并移动LB指针
current.next = lb_ptr
lb_ptr = lb_ptr.next
current = current.next
# 将剩余部分添加到LC,如果其中一个链表已空,则直接添加另一个
if la_ptr:
current.next = la_ptr
elif lb_ptr:
current.next = lb_ptr
return lc.next
# 示例
la = ListNode(1, ListNode(3, ListNode(5)))
lb = ListNode(2, ListNode(4))
lc = merge_sorted_lists(la, lb)
# 输出:1 -> 2 -> 3 -> 4 -> 5 (LC)
```
在这个函数中,我们首先创建一个新链表LC,然后比较LA和LB的当前节点值,将较小的节点添加到LC中,并移动相应的指针。当一个链表遍历完后,只需将另一个链表剩余的部分直接添加到LC即可。
阅读全文