package main /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func insertionSortList(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } dummy := &ListNode{} beg := head for beg != nil { prev := dummy for ; prev.Next != nil && beg.Val > prev.Next.Val; prev = prev.Next { } insert := beg beg = beg.Next insert.Next = prev.Next prev.Next = insert } return dummy.Next } // func main() { // l1 := toLinkedList([]int{ // -1, 5, 3, 4, 0}) // printList(insertionSortList(l1)) // l2 := (*ListNode)(nil) // printList(insertionSortList(l2)) // }