题目描述

使用插入排序对链表进行排序。
Sort a linked list using insertion sort.

示例1

输入

复制

{3,2,4}

输出

复制

{2,3,4}


// 插入排序就是不断的向一个已经排序的列表中(此处为代码中的sortedList)添加新的节点,并且保证添加节点后的列表仍然有序。
//     一开始的时候sortedList为空,需要遍历输入链表(也就是未排序链表,此处为形参head)的每一个节点,每遍历一个,sortedList加一个。
//      cur代表的就是你当前要加入sortedlist的节点。cur要插入的位置在sortedList的哪里呢?就是此处代码中node的后面。 经过这么一轮,一个节点就被加入到了sortlist。之后同理。 /**
 * 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==nullptr || head->next==nullptr) return head;
         
        //在插入时,有可能需要在链表头插入,为了方便,新建立个链表
        ListNode sortedList(0);
        ListNode *cur=head;
         
        while(cur){
            //因为cur的指向可能会改变,所以要预先存下cur的next,以备在下次循环时使用
            ListNode *next=cur->next;
             
            //node代表排序数组的当前节点
            //从前向后遍历排序数组的每一个节点,和当前未排序数组中的节点做比较           
            ListNode* node=&sortedList;
            while(node->next!=nullptr && node->next->val<cur->val) //以为第一个元素是0,所以从next开始
            {
                node=node->next;
            }
             
            cur->next=node->next;
            node->next=cur;
            cur=next;
        }
         
        return sortedList.next;
 
    }
};


最新文章

  1. JS+CSS3人物奔跑动画
  2. 《Java程序设计与数据结构教程(第二版)》学习指导
  3. 【JavaScript】javascript 方法 test()
  4. 运行JSP时出现The requested resource (/proj3/MyJsp.jsp) is not available.(亲测有用)
  5. Android入门(十四)内容提供器-实现跨程序共享实例
  6. Android的4种文件类型Java,class,dex,apk
  7. phpstorm webstorm安装主题 sublime样 还有都可以用的注册码
  8. 不同iOS版本做代码适配__IPHONE_OS_VERSION_MAX_ALLOWED 和 __IPHONE_8_0等专业术语
  9. iOS开发 字符串添加行间距
  10. Jersey(1.19.1) - Representations and Java Types
  11. 201521123025 《Java程序设计》第1周学习总结
  12. ZooKeeper 实现分布式队列
  13. java之jsp页面语法
  14. 转 让Python在Android系统上飞一会儿
  15. chromium ①
  16. PAT甲级 1125. Chain the Ropes (25)
  17. 【python】理想论坛爬虫1.08
  18. OSG环境变量设置
  19. TED_Topic5:How virtual reality can create the ultimate empathy machine
  20. td顶部对齐

热门文章

  1. Keil ARm新建项目
  2. IDEA设置External Tools之Javap反编译字节码
  3. 初始python模块
  4. Python日志采集(详细)
  5. 1.Linux内核模块编程
  6. 自动创建新序列号的Cookies脚本
  7. MeteoInfoLab脚本示例:站点填图
  8. AT一万亿港元市值之差,腾讯和阿里到底“差”在哪里?
  9. hugo网站配置聊天
  10. go读取excel表格数据