1. 程式人生 > >LintCode-連結串列插入排序

LintCode-連結串列插入排序

用插入排序對連結串列排序

樣例

Given 1->3->2->0->null, return 0->1->2->3->null

解題思路:用temp移動,指向head指向的下一個結點。用while迴圈判斷指標指向的下一個地址不為空,如果新建的連結串列指向的結點的值小於原連結串列指向的結點的值,就向下移動,head指向的結點斷鏈,把該結點放在node的那個連結串列後面,head再指向下一個結點,temp指向head指向的下一個結點,以此類推,直至連結串列排序正常。

關鍵程式碼:ListNode*insertionSortList(ListNode *head) {

    ListNode *dummy=new ListNode(0);

    while(head!=NULL)

     { ListNode *node=dummy;

       while(node->next!=NULL&&node->next->val<head->val)

         { node=node->next;}

        ListNode *temp=head->next;

        head->next=node->next;

        node->next=head;

        head=temp;

     }

     return dummy->next;

      }

做題感想:剛開始不會做,看了程式碼之後也不太會,就找同學講了一下,然後自己又畫圖看了一遍,終於懂了,這段程式碼剛開始理解的時候比較難。