前言
持续更新了
正文
问题来源
本问题来自leetcode上的147题。
问题描述
对链表进行插入排序。
示例 1:
输入: 4->2->1->3
输出: 1->2->3->4
示例 2:
输入: -1->5->3->4->0
输出: -1->0->3->4->5
分析:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func insertionSortList(head *ListNode) *ListNode {
if head == nil {
return nil
}
newhead := &ListNode{0, head}
cur := head
next := head.Next
for next != nil {
if cur.Val > next.Val {
tmp := newhead
for tmp.Next.Val < next.Val {
tmp = tmp.Next
}
cur.Next = next.Next
next.Next = tmp.Next
tmp.Next = next
next = cur.Next
} else {
cur = next
next = next.Next
}
}
return newhead.Next
}
总结:
勤思考。
结语
不管怎么样好好加油。