题目:

Sort a linked list using insertion sort.

解题思路:

按题目要求,直接进行插入排序

实现代码:

#include <iostream>

using namespace std;
/*
Sort a linked list using insertion sort.
*/
struct ListNode
{
int val;
ListNode *next;
ListNode(int x):val(x), next(NULL){}
}; void addNode(ListNode* &head, int val)
{
ListNode *newNode = new ListNode(val);
if(head == NULL)
{
head = newNode;
}
else
{
newNode->next = head;
head = newNode;
}
} void PrintList(ListNode *root)
{
ListNode *head = root;
while(head != NULL)
{
cout<<head->val<<"\t";
head = head->next;
}
cout<<endl;
} class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head->next == NULL)
return head;
ListNode *p = head->next;//保存除第一个节点之后的所有节点,待之后逐个进行插入排序
head->next = NULL;
while(p)
{
ListNode *t = p->next;//保存p节点的下一个节点
if(p->val < head->val)//如果当前要插入的节点小于头节点
{ p->next = head;
head = p;//将头结点指向新插入的节点
}
else//否则从头结点的下一个节点开始逐个与当前要插入节点比较,直到遇到大于当前节点的节点
{
ListNode *q = head;
while(q->next && q->next->val <= p->val)
q = q->next; p->next = q->next;
q->next = p;
}
p = t;
}
return head;
}
}; int main(void)
{
ListNode *head = new ListNode();
addNode(head, );
addNode(head, );
addNode(head, );
PrintList(head); Solution solution;
head = solution.insertionSortList(head);
PrintList(head); return ;
}

LeetCode147:Insertion Sort List的更多相关文章

  1. Leetcode147. Insertion Sort List对链表进行插入排序

    对链表进行插入排序. 从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中. 插入排序算法: 插入排序是 ...

  2. [Swift]LeetCode147. 对链表进行插入排序 | Insertion Sort List

    Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...

  3. [LeetCode] Insertion Sort List 链表插入排序

    Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...

  4. 经典排序算法 – 插入排序Insertion sort

    经典排序算法 – 插入排序Insertion sort  插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...

  5. leetcode Insertion Sort List

    题目:Sort a linked list using insertion sort. 代码: /** * Definition for singly-linked list. * struct Li ...

  6. 【leetcode】Insertion Sort List (middle)

    Sort a linked list using insertion sort. 思路: 用插入排序对链表排序.插入排序是指每次在一个排好序的链表中插入一个新的值. 注意:把排好序的部分和未排序的部分 ...

  7. 9. Sort List && Insertion Sort List (链表排序总结)

    Sort List Sort a linked list in O(n log n) time using constant space complexity.                   H ...

  8. LeetCode OJ 147. Insertion Sort List

    Sort a linked list using insertion sort. Subscribe to see which companies asked this question 解答 对于链 ...

  9. Java for LeetCode 147 Insertion Sort List

    Sort a linked list using insertion sort. 解题思路: 插入排序,JAVA实现如下: public ListNode insertionSortList(List ...

随机推荐

  1. url获取参数

    参考http://www.runoob.com/w3cnote/js-get-url-param.html function getQueryVariable(variable) { var quer ...

  2. Mybatis中的N+1问题与延迟加载

    0.什么是N+1问题? 在查询中一下子取出所有属性,就会使数据库多执行几条毫无意义的SQL .实际中不需要把所有信息都加载进来,因为有些信息并不常用,加载它们会多执行几条毫无用处的 SQL,导致数据库 ...

  3. nyoj1076-方案数量 【排列组合 dp】

    http://acm.nyist.net/JudgeOnline/problem.php?pid=1076 方案数量 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 ...

  4. Ugly number丑数2,超级丑数

    [抄题]: [思维问题]: [一句话思路]:Long.valueOf(2)转换为long型再做 [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图 ...

  5. nginx accept() failed (24: Too many open files)

    nginx服务器出现如下信息: [crit] 17221#0: accept4() failed (24: Too many open files) [crit] 17221#0: accept4() ...

  6. EXP-00056:遇到oracle错误12154

    执行命令如下: 引用 exp user/pwd@dbname file=d:text.dmp owner=(user) 碰到了错误: 引用 EXP-00056:遇到oracle错误12154 ORA- ...

  7. Linux 配置文件管理

    一.简介 参考:https://robots.thoughtbot.com/rcm-for-rc-files-in-dotfiles-repos http://dotfiles.github.io/ ...

  8. Windows“储存并显示最近在开始菜单和任务栏中打开的项目”显示灰色问题解决

    问题截图如下: 解决方法 打开"组策略",依次选择"用户配置"--"管理模板"--"开始菜单和任务栏"--"不 ...

  9. DNA binding motif比对算法

    DNA binding motif比对算法 2012-08-31 ~ ADMIN 之前介绍了序列比对的一些算法.本节主要讲述motif(有人翻译成结构模式,但本文一律使用基模)的比对算法. 那么什么是 ...

  10. ip白名单 通过* ? 检测IP匹配 轻量级

    #include "stdafx.h" #include <windows.h> #include <string.h> #include <asse ...