1. 程式人生 > >LeetCode | Insertion Sort List(插入法排序連結串列)

LeetCode | Insertion Sort List(插入法排序連結串列)

Sort a linked list using insertion sort.

題目解析:

連結串列思路不難,但是指標比較麻煩,要細心才行。這道題讓我調了半天,原來是一個指標賦錯了,因為用的變數p和q,導致很長時間才發現……一些規則還是要注意的,變數儘量用能區分的名稱。

class Solution {
public:
    ListNode *insertionSortList(ListNode *head) {
        if(head == NULL)
            return head;
        ListNode *p = head;

        while(p->next){
            if(p->next->val < p->val){
                ListNode *q = p->next;
                p->next = q->next;
                head = insertNode(head,q);
            }else
                p = p->next;
        }
        return head;
    }
    ListNode *insertNode(ListNode *head,ListNode *p){
        if(p->val < head->val){
            p->next = head;
            head = p;
        }else{
            ListNode *q = head;
            while(q->next->val < p->val)
                q = q->next;
            p->next = q->next;
            q->next = p;
        }
        return head;
    }
};