173-链表插入排序

用插入排序对链表排序

样例

Given 1->3->2->0->null, return 0->1->2->3->null

标签

排序 链表

思路

先插入一个值为 INT_MIN 的头结点,可以使操作跟简单方便

code

/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The head of linked list.
*/
ListNode *insertionSortList(ListNode *head) {
// write your code here
if (head == NULL) {
return head;
} ListNode *newHead = new ListNode(INT_MIN);
newHead->next = head;
ListNode *alSort, *noSort, *p, *q;
alSort = newHead->next;
newHead->next = NULL;
while (alSort != NULL) {
p = newHead;
noSort = newHead->next;
while (noSort != NULL && noSort->val <= alSort->val) {
p = noSort;
noSort = noSort->next;
}
q = alSort->next;
alSort->next = p->next;
p->next = alSort;
alSort = q;
}
return newHead->next;
}
};

最新文章

  1. ES6 - Note5:Promise
  2. Uvaoj 10048 - Audiophobia(Floyd算法变形)
  3. VS上利用C#实现一个简单的串口程序记录
  4. Thinkphp 3.2 添加 验证码 如何添加。
  5. hdu4417 划分树+二分
  6. 解读Cardinality Estimation&lt;基数估计&gt;算法(第一部分:基本概念)
  7. 《转载》两个activity界面间跳转切换动画效果
  8. Css四种样式
  9. [C入门 - 游戏编程系列] 序言篇
  10. 面试前的准备---C#知识点回顾----03
  11. Map集合概述和特点
  12. windows系统下使用cd命令
  13. [Codeforces]813F Bipartite Checking
  14. navicat for mysql 破解方法
  15. [Swift]LeetCode348. 设计井字棋游戏 $ Design Tic-Tac-Toe
  16. HTTP常见错误返回状态代码
  17. Vue学习(一)Vue目录结构
  18. linux基本介绍
  19. 【PyQt5-Qt Designer】猜数字(小项目)
  20. Linux未安装上传下载的插件,怎么进行文件的上传下载

热门文章

  1. 5. CSS是什么
  2. Flask中那些特殊的装饰器
  3. linux 操作系统之磁盘管理
  4. Delphi7 GDI+学习
  5. 『Python题库 - 简答题』 Python中的基本概念 (121道)
  6. Python学习5——基本格式化输出
  7. 【数据结构】线性表&amp;&amp;顺序表详解和代码实例
  8. Chip-seq peak annontation
  9. 20145226夏艺华 逆向及Bof基础实践
  10. 北京Uber优步司机奖励政策(3月4日)