/*
1.若链表只有一个节点或者为空,直接返回
2.将链表的前两个节点排序,并将排序之后的第二个节点的下一个节点赋空
3.此时整个链表分为了两个,将未排序的节点一一插入到已排序链表中:
  3.1.第一种情况,待插入节点比排序链表的头节点小
  3.2.第二种情况,待插入节点比排序链表的最后节点大
  3.3.第三种情况,待插入节点可插入到排序链表中
*/
 
class Solution {
public:
    ListNode *insertionSortList(ListNode *head) {
        //输入为空或者只有一个节点
        if(!head || !head->next)return head;
        ListNode *unSortCur = head->next->next;
        if(head->val > head->next->val)
        {
            ListNode *p = head;
            head = head->next;
            head->next = p;
            p->next = nullptr;
        }
        else
            head->next->next = nullptr;
        while(unSortCur != nullptr) //QQQ
        {
            ListNode *sortPre = head;
            ListNode *sortCur = sortPre->next;
            ListNode *unSortNext = unSortCur->next;
            if(unSortCur->val < head->val)
            {
                unSortCur->next = head;
                head = unSortCur;
            }
            else{
                while(sortCur != nullptr && unSortCur->val > sortCur->val)
                {
                    sortCur = sortCur->next;
                    sortPre = sortPre->next;
                }
                if(sortCur == nullptr){
                    sortPre->next = unSortCur;
                    unSortCur->next = nullptr;
                }
                else{
                    sortPre->next = unSortCur;
                    unSortCur->next = sortCur;
                }
            }
            unSortCur = unSortNext;
        }
        return head;
    }
};

最新文章

  1. 一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)
  2. 10.Struts2连接数据库
  3. Ubuntu下忘记MySQL密码重设方法
  4. Memcache使用
  5. poj 2115 Looooops
  6. nginx配置入门
  7. 将Asp.Net页面输出到EXCEL里去
  8. SVN管理工具Cornerstone之:创建分支、提交合并
  9. Day1_算法分析方法
  10. Effective C++(13) 用对象管理资源
  11. 创建Win32图形界面应用程序
  12. OSX MacVim + vim-lldb配置和使用心得
  13. Java常用类(三)之StringBuffer与StringBuidler
  14. PAT1124:Raffle for Weibo Followers
  15. [TopCoder]棍子
  16. node使用ftp模块获取文件夹信息,中文乱码问题
  17. Django-rest-framework 接口实现 限制:(Throttle)
  18. MySQL STR_TO_DATE函数
  19. MySQL长度、大小写验证问题[开发篇]
  20. IdentityServer4:IdentityServer4+API+Client实践OAuth2.0客户端模式(1)

热门文章

  1. oracle数据库自动生成数据库表结构文档(亲测有效)
  2. ramdisk配置、解压、创建rootfs、启动简单分析
  3. 如何查找jdk安装路径也就是JAVA_HOME配置的环境变量
  4. 机器学习--支持向量机 (SVM)算法的原理及优缺点
  5. 机器学习--PCA算法代码实现(基于Sklearn的PCA代码实现)
  6. A1071 Speech Patterns (25 分)
  7. Ubuntu 修改默认编辑器
  8. golang数据结构之树的三种遍历方式
  9. Web自动化测试Selenium 学习笔记(一)
  10. git 添加add readme.txt 报fatal: pathspec &#39;readme.txt&#39; did not match any files错误