147. Insertion Sort List

来源:互联网 发布:淘宝省钱群骗局 编辑:程序博客网 时间:2024/04/20 21:45

Sort a linked list using insertion sort.

Subscribe to see which companies asked this question

/** * 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(NULL == head) return head;        ListNode* newhead=head;        head=head->next;        newhead->next = NULL;        while(head)        {            ListNode* next=head->next;            head->next=NULL;            ListNode* temp= newhead;            if(newhead->val >= head->val)            {                head->next=newhead;                temp = head;            }            else            {                ListNode* pretemp=NULL;                while(newhead)                {                    if(head->val<=newhead->val)                    {                        pretemp->next=head;                        head->next=newhead;                        // pretemp=head;                        break;                    }                    pretemp=newhead;                    newhead=newhead->next;                }                 if(newhead==NULL)                {                    pretemp->next=head;                    // head->next=NULL;                }            }            head = next;            newhead=temp;        }        return newhead;    }};

0 0
原创粉丝点击