【leetcode刷题笔记】Insertion Sort List

Sort a linked list using insertion sort.


 

题解:实现链表的插入排序。

要注意的地方就是,处理链表插入的时候尽量往当前游标的后面插入,而不要往前面插入,后者非常麻烦。所以每次利用kepeler.next.val和head.val比较大小,而不是kepeler.val和head.val比较大小,因为如果用后者,要把head指向的节点插入到kepeler指向的节点的前面,如果kepeler指向的节点是头结点,就更麻烦了。

代码如下:

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) {
 7  *         val = x;
 8  *         next = null;
 9  *     }
10  * }
11  */
12 public class Solution {
13     public ListNode insertionSortList(ListNode head) {
14         ListNode newHead = new ListNode(0);
15           
16           while(head != null){
17               ListNode kepeler = newHead;
18               while(kepeler.next != null && kepeler.next.val < head.val){
19                   kepeler = kepeler.next;
20               }
21               
22               ListNode temp = head.next;
23               head.next = kepeler.next;
24               kepeler.next = head;
25               head = temp;
26           }
27           
28           return newHead.next;
29     }
30 }

 

posted @ 2014-07-14 16:14  SunshineAtNoon  阅读(243)  评论(0编辑  收藏  举报