用插入排序对链表排序
样例
Given 1->3->2->0->null
, return 0->1->2->3->null
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(!head)
return nullptr;
ListNode *dummy=new ListNode(0);
ListNode *temp=nullptr;
while(head){ //head节点插入dummy链表中
temp=dummy; //temp指向dummy的头节点
ListNode *next=head->next;
while(temp->next!=nullptr&&temp->next->val<head->val) //寻找插入点
temp=temp->next;
head->next=temp->next;
temp->next=head;
head=next;
}
temp=dummy;
dummy=dummy->next;
free(temp);
return dummy;
}
};