链表分化
2016-07-15 11:17
155 查看
对于一个链表,我们需要用一个特定阈值完成对它的分化,使得小于等于这个值的结点移到前面,大于该值的结点在后面,同时保证两类结点内部的位置关系不变。
如特定值val,把链表遍历,小于等于val的生成一个链表,大于的生成一个链表
如特定值val,把链表遍历,小于等于val的生成一个链表,大于的生成一个链表
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Divide { public ListNode listDivide(ListNode head, int val) { // write code here if(head==null||head.next==null) { return head; } //小于部分 ListNode sh = null; ListNode st = null; //大于部分 ListNode bh = null; ListNode bt = null; ListNode next = null; ListNode p = head; while(p!=null) { next = p.next; p.next = null; if(p.val<=val) { if(sh==null)//sh和st实际上为引用,对其操作的效果相同 { sh = p; st = p; }else { st.next = p; st = p; } }else{ if(bh==null) { bh = p; bt = p; }else { bt.next = p; bt = p; } } p = next; } if(st!=null) { st.next = bh; } return sh!=null?sh:bh; } }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- Node.js环境下JavaScript实现单链表与双链表结构
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)