• 单链表 插入排序


    思想:把待排序的链表分为已经排序的链表,和剩余未排序的链表

    例如:3->4->1->5->2->NULL

    已经排序完毕的的链表:(从第一个数开始) 3->NULL          

    未排序完毕的链表:4->1->5->2                                    用p表示还未排序的剩余链表的首节点

    例如:3->4->NULL                    ready

            1->5->2->NULL              

    每次已经排序完毕的链表的尾节点的next指针都是NULL

    ListNode* insertsort( ListNode*head){
         if(head==NULL||head->m_pNext==NULL) return head;
        
        
         ListNode* p=head->m_pNext;          //从第二个节点开始
         head->m_pNext=NULL;                 //首个元素next置为NULL
        while(p!=NULL){
             ListNode*temp=head;                    
            
             ListNode*prev=NULL;
             while(temp!=NULL&&temp->m_nValue<=p->m_nValue){
                prev=temp;
                temp=temp->m_pNext;
            }
            if(temp==NULL){
                prev->m_pNext=p;
                 ListNode*last=p;
                 p=p->m_pNext;
                 last->m_pNext=NULL;
            }
            else if(temp->m_nValue>p->m_nValue){
                 ListNode*first=p;
                 p=p->m_pNext;
                 first->m_pNext=head;
                head=first;
            }
            else {
                ListNode* mid=prev->m_pNext;
                 ListNode*next=p;
                 p=p->m_pNext;
                 prev->m_pNext=next;
                 next->m_pNext=mid;
            }
        }
        return head;
    }
  • 相关阅读:
    mongodb导入导出
    python笔记1
    C# 文件下载断点续传
    热水维修记事
    memcached笔记
    模拟登陆
    Nginx学习笔记之加强篇
    Redis学习笔记之基础篇
    Nginx学习笔记之应用篇
    Nginx 学习笔记之安装篇
  • 原文地址:https://www.cnblogs.com/kkshaq/p/4517910.html
Copyright © 2020-2023  润新知