Insertion Sort List - LeetCode 147
2015-06-12 22:24
411 查看
题目描述:
Sort a linked list using insertion sort.
Hide Tags Linked List Sort
分析:
插入排序是在一个已排序的序列中找到当前元素正确的位置,然后插入禁区即可。
由于链表不能随机访问,所以每处理一个元素时,都必须从前往后找到正确的位置,然后插入节点即可。
为了方便操作,可以新建一个带有头节点的链表newh,然后遍历原始链表中一个节点,就从新链表的下一个节点开始找,直到某节点的值小于当前节点的值,插入即可。
Sort a linked list using insertion sort.
Hide Tags Linked List Sort
分析:
插入排序是在一个已排序的序列中找到当前元素正确的位置,然后插入禁区即可。
由于链表不能随机访问,所以每处理一个元素时,都必须从前往后找到正确的位置,然后插入节点即可。
为了方便操作,可以新建一个带有头节点的链表newh,然后遍历原始链表中一个节点,就从新链表的下一个节点开始找,直到某节点的值小于当前节点的值,插入即可。
/**////////80ms/*/ /** * 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 == NULL || head->next == NULL) return head; ListNode *newh = new ListNode(0); //添加方便操作的头节点 ListNode *cur = head; while(cur != NULL){ //依次处理原链表中的每个节点 ListNode *t = new ListNode(cur->val); ListNode *tmp = newh; while(tmp->next != NULL && tmp->next->val <= cur->val) //找到合适的位置插入节点 tmp = tmp->next; t->next = tmp->next; tmp->next = t; cur = cur->next; } return newh->next; //去掉新链表的头节点后返回 } };
相关文章推荐
- Sensor 数据整理
- Opencv 图像叠加 添加水印
- ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml
- location对象
- Android-async-http回调逻辑的二次封装
- 让idea中的java显示成员
- linux下出现architecture of input file `*.o' is incompatible with i386:x86-64 output的解决方法
- DotNetBar v12.2.0.7 Fully Cracked
- linux基本操作2
- Ubuntu下安装配置和卸载Maven
- 解决Git无法同步空文件夹的问题
- mysql学习笔记_函数
- CSV文件是什么?
- POJ 2513 字典树+并查集+欧拉路径
- js原生创建模拟事件和自定义事件的方法
- 黑马程序员——Java基础——多线程
- Java通过Ldap操作AD的增删改查询
- Ubuntu ftp tftp 服务器的搭建
- dilworth解决的题目poj3636,poj1631
- 用OxyPlot在WPF中演示正演磁异常的变化规律