题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
def union(head1,head2):
p = head1
q = head2
if not p:
return q
if not q:
return p
head = Node()
h = head
while p and q:
if p.data<q.data:
h.next = p
p = p.next
else:
h.next = q
q=q.next
h = h.next
if not p:
h.next=p
else:
h.next=q
return head.next
注:
使用三个指针,一个指向合并链表,另两个分别用来遍历待排序的链表,比较两个链表当前节点的大小,使第一个指针指向小的节点,当前节点指针往后遍历一个,直到两个链表其中一个遍历完,然后让第一个指针指向未完列表,拼接起来。