147. Insertion Sort List
Sort a linked list using insertion sort.
用插入排序方法对链表进行排序。可以构建一个临时的链表,然后将待排序的链表的每一个节点插入到临时链表中
// 插入排序
public ListNode insertionSortList(ListNode head) {
ListNode dummy = new ListNode(0);
ListNode pre = dummy;
ListNode cur = head;
while (cur != null) {
pre = dummy;
// 从伪头结点的下一个结点开始,(注意判空)
// 让pre指向小于cur.val的最大结点(升序)
while (pre.next != null
&& pre.next.val < cur.val) {
pre = pre.next;
}
// next暂存cur的下一个结点
ListNode next = cur.next;
// 把cur连接在pre后面
// cur.next指向pre.next
cur.next = pre.next;
pre.next = cur;
cur = next;
}
return dummy.next;
}
总结;
伪头结点的使用
链表结点的插入