这题也是写了好久,可能是对于指针的使用不够熟练,自己写的老实越界,后来受不了了,就看看了别人写的,
这里有一个方法,就是加入一个头结点,另外我忘记死循环找插入的位置了,还想到找一个前置节点。
另外这个做法比较巧妙的是加入一个头节点,比较值的时候直接使用下一个next的val值,比较巧妙,另外插入的时候,
利用头结点加了俩个相同值,然后替换后面一个,相当于直接把要插入的地方,直接置换,后面加上,具体的请看代码:
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
ListNode *q,*p,pre(0),*t;
if(head==NULL)
return NULL;
for(q=&pre,pre.next=head;q->next;){
for(p=⪯p!=q&&p->next->val<q->next->val;p=p->next);
if(p==q){
q=q->next;
continue;
}
t=p->next;
p=p->next=q->next;
q->next=q->next->next;
p->next=t;
}
return pre.next;
}
};