版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012503241/article/details/82875878
题目:Sort a linked list using insertion sort.
解题思路:链表的插入排序,基本原理跟顺序表一样的,仔细理解就好。dummyNode是真的好用
代码:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode insertionSortList(ListNode head) {
if(head == null) return head;
ListNode dummyNode = new ListNode(Integer.MIN_VALUE);
dummyNode.next = new ListNode(head.val);
ListNode pre = dummyNode;
ListNode p = dummyNode.next;
p.next = null;
ListNode cur = head.next;
while (cur!=null){
ListNode next = cur.next;
while (p!=null && p.val < cur.val){
pre = p;
p = p.next;
}
pre.next = cur;
cur.next = p;
pre = dummyNode;
p = dummyNode.next;
cur = next;
}
return dummyNode.next;
}