21. Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 11 15:17:05 2019
@author: Administrator
"""
#Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 == None:
return l2
if l2 == None:
return l1
head = ListNode(0)
cur = None
cur1 = l1
cur2 = l2
#l3 = ListNode(0)
if cur1.val < cur2.val:
head = l1
cur = cur1
cur1 = cur1.next
else:
head = l2
cur = cur2
cur2 = cur2.next
print (cur.val)
while cur1 != None and cur2 != None:
if cur1.val < cur2.val:
#l3.val = l1.val
#l3.next =
cur.next = cur1
cur = cur1
print (cur.val)
cur1 = cur1.next
else:
cur.next = cur2
cur = cur2
print (cur.val)
cur2 = cur2.next
#while cur1.next != None:
#print (cur1.val)
#cur1 = cur1.next
#while cur2.next != None:
#print (cur2.val)
#cur2 = cur2.next
print (cur1.val)
#此处指针没指向cur1
if cur1 != None:
cur.next = cur1
print ("cur%d"%cur.next.val)
if cur2 != None :
cur.next = cur2
while head != None:
print (head.val)
head = head.next
return head
def ConstructList(nums):
head = ListNode(nums[0])
head.next = None
tmp = None
cur = head
for i in range(1,len(nums)):
tmp = ListNode(nums[i])
tmp.next = None
cur.next = tmp
cur =tmp
return head
l1 = ConstructList([1,2,4])
l2 = ConstructList([1,3,4])
A = Solution()
A.mergeTwoLists(l1,l2)