147.leetcode Insertion Sort List(medium)[連結串列 插入排序]
阿新 • • 發佈:2019-01-24
Sort a linked list using insertion sort.
題目的意思是用插入排序的方式對一個連結串列進行排序。插入排序的思想是對每個元素檢測,將當前元素插入到之前有序序列的相應位置。這裡採用的是從前往後查詢的過程,首先找到第一個大於當前元素的節點,然後往後依次替換元素的值。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* insertionSortList(ListNode* head) { if(head == NULL || head->next == NULL) return head; ListNode* p = head; ListNode* q = head->next; while(q!=NULL) { for(p = head;p != q;p = p->next) { if(p->val>q->val) { int b = p->val; p->val = q->val; p = p->next; while(p != q->next) { int k = p->val; p->val = b; b = k; p = p->next; } break; } } q = q->next; } return head; } };