给出一个单向链表,只有表头,使用插入排序的方法给他排序,被这道题磨了好久,不熟悉单链表以及指针,还是需要多多练习
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode *insertionSortList(ListNode *head) { if(head==NULL) return NULL; ListNode *cntnode=NULL,*prenode=NULL,*nextnode=NULL,*node=NULL; cntnode=head->next; head->next=NULL; while(cntnode) { node=cntnode->next; if(cntnode->val<head->val) { cntnode->next=head; head=cntnode; } else { prenode=head; nextnode=head->next; while(nextnode&&(nextnode->val)<cntnode->val) { prenode=pre->next; nextnode=nextnode->next; } prenode->next=cntnode; cntnode->next=nextnode; } cntnode=node; } return head; }
[leetcode]单链表插入排序,布布扣,bubuko.com
原文:http://blog.csdn.net/zju_ziqin/article/details/24182185