Leetcode#147 Insertion Sort List

原题地址

心得:有关链表的题目,多用中间变量,代码写得清晰一点,适当注释

代码:

 1 ListNode *insertionSortList(ListNode *head) {
 2         if (!head) return NULL;
 3         
 4         ListNode *curr = head->next;
 5         ListNode *prev = head;
 6         while (curr) {
 7             ListNode *p = NULL;
 8             ListNode *c = head;
 9             // 寻找插入位置
10             while (c->val < curr->val) {
11                 p = c;
12                 c = c->next;
13             }
14             // 如果要插入的位置就是当前位置
15             if (c == curr) {
16                 prev = curr;
17                 curr = curr->next;
18             }
19             // 否则插入节点
20             else {
21                 prev->next = curr->next;
22                 curr->next = c;
23                 if (!p) // 如果带插入的位置是队首
24                     head = curr;
25                 else // 普通情况
26                     p->next = curr;
27                 curr = prev->next;
28             }
29         }
30         
31         return head;
32 }
原文地址:https://www.cnblogs.com/boring09/p/4260465.html