链表相关算法

来源:互联网 发布:微信商城源码使用 编辑:程序博客网 时间:2024/06/09 22:38
// 链表插入排序:/** * 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( NULL == head || NULL == head->next )        {            return head;        }        ListNode *myHead = head;      //  ListNode *cur = myHead;        ListNode *p = head->next;        myHead->next = NULL;        ListNode *pre = NULL;        ListNode *pCur = NULL;        ListNode *pCurNext = NULL;        for( pCur = p; pCur != NULL; pCur = pCurNext )        {            pCurNext = pCur->next;            pCur->next = NULL;            p = myHead;            pre = NULL;            while( p != NULL )            {                ListNode *pnext = p->next;                if( pCur->val <= p->val )                {                    if( NULL == pre )                                {                        pCur->next = myHead;                        myHead = pCur;                    }                    else                     {                        pCur->next = p;                        pre->next = pCur;                    }                    break;                }                else                {                    pre = p;                    p = pnext;                }            }            if( NULL == p )            {                pre->next = pCur;            }        }       return myHead;    }};
0 0
原创粉丝点击