[leetcode]-148. Sort List(C语言)

Sort a linked list in O(n log n) time using constant space complexity.

Example 1:

Input: 4->2->1->3
Output: 1->2->3->4

Example 2:

Input: -1->5->3->4->0
Output: -1->0->3->4->5
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* sortList(struct ListNode* head) {
    int tem;
    struct ListNode *p,*q,*r;
    if(head==NULL||head->next==NULL)
        return head;
    for(p=head;p->next!=NULL;p=p->next)
    {
        r=p;
        for(q=p->next;q!=NULL;q=q->next)
        {
            if(r->val>q->val)
                r=q;
        }
        if(r!=p)
            {
                tem=p->val;
                p->val=r->val;
                r->val=tem;
            }
    }
    return head;
}

猜你喜欢

转载自blog.csdn.net/shen_zhu/article/details/81432301