思路:
直插 分为有序和无序序列,本题的head头结点也有数据,所以要建立一个哑节点,后继节点指向head
单独的head节点断链,作为有序序列,然后依次遍历无序序列,用P指针遍历,q指针保存p的后继,逐个插入到有序序列中
AC错误:head也有数据
注意点:
ListNode list=new ListNode() 初始化一个空节点,无值,不提倡此种写法。
ListNode list=new ListNode(0) 初始化一个节点值为0的空节点,最常用最正规写法
ListNode list=null 为空,什么都没有,一般不这么写;
class Solution {
public:
ListNode* insertionSortList(ListNode* head) {
if(head==NULL)
{
return head;
}
ListNode *L = new ListNode(0);
L->next = head;
ListNode *q,*r,*pre;
ListNode *p=L->next;
L->next=NULL;
while(p!=NULL)
{
q=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->val<p->val)
{
pre=pre->next;
}
p->next=pre->next;
pre->next=p;
p=q;
}
return L->next;
}
};