Sort a linked list using insertion sort
ListNode *insertionSortList(ListNode *head)
{
if(!head || !head->next)
return head;
ListNode* result =head;
ListNode* p = head;
ListNode* pre =NULL;
head = head->next;
result->next = NULL;
while(head != NULL)
{
p = result;
while(p != NULL && head->val > p->val)
{
pre=p;
p=p->next;
}
if(p == result)
{
result = head;
head = head->next;
result -> next = p;
}
else
{
pre->next = head;
head = head->next;
pre->next->next = p;
}
}
return result;
}
已AC 276ms