Insertion Sort List

来源:互联网 发布:社员网 知乎 编辑:程序博客网 时间:2024/04/27 04:34

Sort a linked list using insertion sort.

/** * 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) {        ListNode *p1=NULL,*p2=NULL,*pre1=NULL,*pre2 =NULL;if(head) {    pre2=head;//p2的前驱p2=head->next;}while(p2){//从第二个元素开始pre1=NULL;//p1的前驱p1=head;while(p1!=p2){if(p1->val > p2->val){    if(pre1){//不是头元素pre2->next=p2->next;p2->next = p1;pre1->next = p2;p2 = pre2;}else{//是头元素pre2->next = p2->next;p2->next = p1;head = p2;p2 = pre2;}break;}else{    pre1=p1;p1=p1->next;}}pre2=p2;p2=p2->next;}        return head;}};


0 0