LeetCode insertion-sort-list

来源:互联网 发布:java 数据结构面试题 编辑:程序博客网 时间:2024/06/14 18:50

好麻烦,指针绕来绕去的,特别注意两点:在第一个位置之前插入要改变head的值;如果head为NULL直接返回。

class Solution{

public:
    ListNode* insertionSortList(ListNode* head){
        ListNode* p=head;
        ListNode* q=head;
        ListNode* r=head;
        ListNode* f=head;
        ListNode* a=head;
        if(head==NULL)return head;
        r=head;
        p=head->next;
        while(p!=NULL)
        {
            f=head;
            a=head;
            while(f!=p)
            {
                if(f->val<p->val)
                {
                    a=f;
                    f=f->next;
                }
                else
                {
                    break;
                }
            }
            if(f!=p)
            {
                if(a==f)
                {
                    q=p;
                    p=p->next;
                    r->next=p;
                    q->next=a;
                    a=q;
                    f=a->next;
                    head=a;
                }
                else
                {
                    q=p;
                    p=p->next;
                    r->next=p;
                    a->next=q;
                    q->next=f;
                }


            }
            else if(f==p)
            {
                r=p;
                p=p->next;
            }
        }
        return head;
    }
};
0 0
原创粉丝点击