程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 147. Insertion Sort List,147insertion

147. Insertion Sort List,147insertion

編輯:C++入門知識

147. Insertion Sort List,147insertion


Sort a linked list using insertion sort.

 

用一個輔助指針來做表頭避免處理改變head的時候的邊界情況。

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* insertionSortList(ListNode* head) {
12       if(head == NULL){
13           return head;
14       }
15       
16       ListNode* helper = new ListNode(0);
17       ListNode* pre = helper;
18       ListNode* cur = head;
19       
20       while(cur != NULL){
21           ListNode* next = cur->next;
22           //保存head位置
23           pre = helper;
24           while(pre->next != NULL && pre->next->val < cur->val){
25               pre = pre->next;
26           }
27           //插入
28           cur->next = pre->next;
29           pre->next = cur;
30           //恢復
31           
32           cur = next;
33       }
34       return helper->next;
35     }
36 };

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved