Reverse Half LinkedList
2016-02-03 11:08
344 查看
1-2-3-4-5-6 into 1-2-3-6-5-4 or 1-2-3-4-5 into 1-2-5-4-3
I took advantage of reversing a linkedlist.
I provided main func and prinf func.
I took advantage of reversing a linkedlist.
I provided main func and prinf func.
package testAndfun; public class reverseHalfLinkedList { public static void main(String[] args){ reverseHalfLinkedList rh =new reverseHalfLinkedList(); Node n1 = new Node(1); Node n2 = new Node(2); Node n3 = new Node(3); Node n4 = new Node(4); Node n5 = new Node(5); n1.next = n2; n2.next = n3; n3.next = n4; n4.next = n5; prinf(n1); prinf(rh.reorder(n1)); } //loop to len/2 point, and take advantage of reverse() the len-len/2 part public Node reorder(Node head){ if(head==null||head.next==null) return head; int len = 0; Node l = head; while(l!=null){ len++; l= l.next; } l = head; int half = len/2; while(half>1){ l = l.next; half--; } //the rest part reverse l.next = reverseList(l.next); return head; } //take advantage of reversing linkedlist public Node reverseList(Node head) { if(head==null||head.next==null) return head; Node second = head.next; head.next=null; Node rest = reverseList(second); second.next = head; return rest; } private static void prinf(Node h){ while(h!=null){ System.out.print(h.val+"->"); h = h.next; } System.out.println(); } static class Node{ int val; Node next; Node(int x){ this.val = x; } } }
相关文章推荐
- webpack入门(七) API in LOADERS
- 新网站是否应该使用 Drupal 8?
- JSON详解
- 关于crtmpserver编译运行及源码修改
- https总结
- php析构函数的用法
- 排序二之冒泡排序
- C++中vector的用法实例解析
- Swift学习 ?和!
- ECMAScript 5.1 Edition DOC 学习笔记
- 学习笔记--树链剖分
- 白开水-2015年年终总结
- UVA227
- mapreduce程序加队列两种方式
- 自定义表单构件
- PyLucene学习之一
- iOS CAGradientLayer 详解
- unity5中AssetBundle相关
- 学习笔记--树链剖分
- 计算机网络——计算机网络基础知识总结