leetcode[147]Insertion Sort List

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 *newh=new ListNode(0);

        ListNode *p=head;

        while(p)

        {

            ListNode *pretmp=newh;

            ListNode *pnext=p->next;

            ListNode *tmp=newh->next;

            if(!tmp)

            {

                newh->next=p;

                newh->next->next=NULL;

                p=pnext;

                continue;

            }

            while(tmp)

            {

                if(p->val<=tmp->val)

                {

                    pretmp->next=p;

                    p->next=tmp;

                    break;

                }

                else

                {

                    pretmp=tmp;

                    tmp=tmp->next;

                }

            }

            if(!tmp)

            {

                pretmp->next=p;

                pretmp->next->next=NULL;

            }

            p=pnext;

        }

        return newh->next;

    }

};

 

你可能感兴趣的:(LeetCode)