147. Insertion Sort List

来源:互联网 发布:科技公司网站源码 编辑:程序博客网 时间:2024/06/11 02:48

Sort a linked list using insertion sort.


这一题题目比较简单,就是给出一个链表序列,然后用插入排序的方法对其进行排序。那么一般链表的操作,在前面加上dummy的话,操作起来会更简单,因为需要一个prev指针来指向前面一个位置,代码如下。

Code(LeetCode运行56ms)

/** * 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(INT_MIN);        //dummy.next = head; 这一步加了会错,因为在插入的时候,传的参数是dummy,那么在第一次调用该函数,就会自动把dummy和list连接起来。                for (auto cur = head; cur != NULL;) {            auto pos = findInsertPos(&dummy, cur -> val);            ListNode* temp = cur -> next;            cur -> next = pos -> next;            pos -> next = cur;            cur = temp;        }        return dummy.next;    }        ListNode* findInsertPos(ListNode* head, int val) {        ListNode *prev = NULL;        for (auto cur = head; cur != NULL && cur -> val <= val; prev = cur, cur = cur -> next) ;        return prev;    }};


原创粉丝点击