# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def insertionSortList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:
return head
dummyHead = ListNode(0)
dummyHead.next = head
pre = dummyHead
cur = head.next
p = head
p.next = None
while cur:
while p:
if cur.val < p.val:
nextCur = cur.next
cur.next = p
pre.next = cur
cur = nextCur
pre = dummyHead
p = pre.next
break
else:
pre = p
p = p.next
if not p:
nextCur = cur.next
pre.next = cur
cur.next = None
cur = nextCur
pre = dummyHead
p = pre.next
return dummyHead.next
def creatList(self,l):
dummyHead = ListNode(0)
pre = dummyHead
for i in l:
pre.next = ListNode(i)
pre = pre.next
return dummyHead.next
def printList(self,head):
cur = head
while cur:
print cur.val
cur = cur.next
l1 = [4,2,1,3]
s = Solution()
head = s.creatList(l1)
s.printList(head)
head = s.insertionSortList(head)
s.printList(head)