[leetcode 147] Insertion Sort List

来源:互联网 发布:vb设置焦点 编辑:程序博客网 时间:2024/05/17 08:53

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) {        ListNode dummy(-1);        dummy.next = head;        ListNode *prev = &dummy;        for (auto first = prev->next ; first; ) {            ListNode *second = dummy.next;            ListNode *pre_second = &dummy;            for (; second != first; pre_second = second, second =  second->next) {                if (second->val > prev->next->val) {                    prev->next = prev->next->next;                    first->next = second;                    pre_second->next = first;                    first = prev->next;                    break;                }            }            if (second == first) {                prev = prev->next;                first = prev->next;            }        }        return dummy.next;    }};


0 0