173. 链表插入排序
用插入排序对链表排序
样例
样例 1:
输入: 0->null
输出: 0->null
样例 2:
输入: 1->3->2->0->null
输出 :0->1->2->3->null
ListNode * insertionSortList(ListNode * head) {
// write your code here
if(NULL ==head)
{
return head;
}
ListNode * p= head;
p=p->next;
head->next=NULL;
while(p)
{
ListNode * node = p;
p=p->next;
node->next = NULL;
//在头部插入
if(node->val <= head->val)
{
node->next = head;
head=node;
}
else if(node->val>head->val)
{
cout<<"head->val"<<head->val<<endl;
ListNode * tmp = head->next;
ListNode * pre = head;
while(tmp)
{
if(tmp->val< node->val)
{
tmp=tmp->next;
}
else
{
break;
}
pre=pre->next;
}
cout<<"pre->val"<<pre->val<<endl;
if(NULL == tmp) //在尾部插入
{
pre->next = node;
}
else //在中部插入
{
pre->next = node;
node->next=tmp;
}
}
}
return head;
}