/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *insertionSortList(ListNode *head) { if(!head||head->next==NULL) return head; ListNode *pstart=new ListNode(0);//添加一个头指针以方便处理,设所有节点数据大于0 pstart->next=head; ListNode *preCur=head,*cur=head->next; while(cur!=NULL) { ListNode *prePos=pstart,* pos=pstart->next; while(pos->val<cur->val) { prePos=prePos->next;//prePos指向带插入位置的前方 pos=pos->next;//pos指向待插入位置的后方 } if(pos!=cur) { preCur->next=cur->next; cur->next=pos; prePos->next=cur; //preCur不变 cur=preCur->next; } else { preCur=cur; cur=cur->next; } } head=pstart->next; delete pstart; return head; } };
leetcode:Insert Sort List,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u010367506/article/details/26135737