两个有序链表A,B,合并成C后,使C链表依然有序。
#! -*- coding:utf-8 -*-
class ListNode(object):
def __init__(self,x):
self.val=x
self.next=None
'''
思路:
1、建立新节点
2、两个节点遍历,谁小就向新节点添加
3、合并剩余的节点
'''
def mergeTowList(head1,head2):
### 设置临时节点
newHead=ListNode(0)
pre=newHead
'''
开始合并
'''
while(head1 and head2):
if head1.val>head2.val:
pre.next=head2
head2=head2.next
else:
pre.next = head1
head1 = head1.next
pre=pre.next
'''
合并其他没有进入的节点
'''
if head1:
pre.next=head1
if head2:
pre.next=head2
return newHead.next
if __name__=="__main__":
head=ListNode(10)
p1=ListNode(20)
p2=ListNode(30)
p3=ListNode(40)
p4=ListNode(50)
p5=ListNode(60)
p6=ListNode(70)
head.next=p1
p1.next=p2
p2.next=p3
p3.next=p4
p4.next=p5
p5.next=p6
head2 = ListNode(11)
p11 = ListNode(21)
p22 = ListNode(31)
p33 = ListNode(41)
p44 = ListNode(51)
p55 = ListNode(73)
p66 = ListNode(71)
head2.next = p11
p11.next = p22
p22.next = p33
p33.next = p44
p44.next = p55
p55.next = p66
h=mergeTowList(head,head2)
while h:
print h.val
h=h.next