python实现两个升序链表合并

 1 # Definition for singly-linked list.
 2 class ListNode:
 3     def __init__(self, x):
 4         self.val = x
 5         self.next = None
 6 
 7 
 8 class Solution:
 9     def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
10 
11         new = ListNode('head')
12         new_cur = new
13         while l1 is not None and l2 is not None:
14             if l1.val <= l2.val:
15                 new_cur.next = l1
16                 new_cur = new_cur.next
17                 l1 = l1.next
18             else:
19                 new_cur.next = l2
20                 new_cur = new_cur.next
21                 l2 = l2.next
22 
23         if l1 is None:
24             new_cur.next = l2
25         else:
26             new_cur.next = l1
27 
28         return new.next
29 
30 
31 def Init_node(s: str) -> ListNode:
32     s = s.split('->')
33     head_node = ListNode('head')
34 
35     for i in s:
36         new_node = ListNode(int(i))
37         cur_node = head_node
38         while cur_node.next is not None:
39             cur_node = cur_node.next
40         cur_node.next = new_node
41 
42     return head_node.next
43 def show_node(node:ListNode):
44     while node is not None:
45         print(node.val,end=' ')
46         node = node.next
47     print('')
48 
49 if __name__ == '__main__':
50 
51     s1 = '1->2->4'
52     s2 = '1->3->4'
53     list_node_1 = Init_node(s1)
54     list_node_2 = Init_node(s2)
55 
56     solu = Solution()
57     merge = solu.mergeTwoLists(list_node_1, list_node_2)
58     show_node(merge)

 

posted on 2020-04-11 17:26  江南烟雨尘  阅读(975)  评论(0编辑  收藏  举报

导航