反转单向链表 (java 语言实现)
2016-04-22 11:08
633 查看
/** * 演示翻转链表的两种典型实现,使用泛型。 * * @author shan * @create 2016-09-01 11:46 */ public class ReverseSinglyList { /** * 递归,在反转当前节点之前先反转后续节点 * @param current * @param <E> * @return */ public static <E> Node<E> reverse(Node<E> current){ if (current == null || current.getNextNode() == null){ return current; } Node<E> newHead = reverse(current.getNextNode()); current.getNextNode().setNextNode(current); current.setNextNode(null); return newHead; } /** * 迭代,将当前节点的下一个节点缓存后更改当前节点指针 * @param current * @param <E> * @return */ public static <E> Node<E> reverse2(Node<E> current){ if (current == null) { return current; } Node<E> pre = current; Node<E> cur = current.getNextNode(); while(cur != null){ Node<E> tmp = cur.getNextNode(); cur.setNextNode(pre); pre = cur; cur = tmp; } current.setNextNode(null); return pre; } /** * 顺序打印链表中的值 * @param current * @param <E> */ public static <E> void printList(Node<E> current){ while(current != null){ System.out.print(current.getRecord()); current = current.getNextNode(); } System.out.println(); } @Test public void testReverse() { Node<Integer> head = new Node< Integer>(0); Node<Integer> cur = head; Node<Integer> tmp; for (int i=1 ; i < 10;i++){ tmp = cur; cur.setNextNode(new Node<Integer>(i)); cur = tmp.getNextNode(); } printList(head); Node<Integer> newHead = reverse(head); printList(newHead); } @Test public void testReverse2(){ Node<Integer> head = new Node< Integer>(0); Node<Integer> cur = head; Node<Integer> tmp; for (int i=1 ; i < 10;i++){ tmp = cur; cur.setNextNode(new Node<Integer>(i)); cur = tmp.getNextNode(); } printList(head); Node<Integer> newHead = reverse2(head); printList(newHead); } }
相关文章推荐
- spring自定义schema
- java和数据库之间的日期和时间转换
- Java学习笔记--迭代器
- 内存回收的角度,java堆细分
- java 引用数据类型
- java 创建数组
- Java中运用数组的四种排序方法
- maven搭建java ee项目图文教程
- javaAPI之Properties
- 二叉树的遍历问题-----Java实现(中序、前序、后序、遍历)
- Spring 简介
- Swagger与SpringMVC项目整合
- Java泛型深入理解
- java安全-安全管理器
- Java集合类Map与MapEntry学习
- 笔试——JAVA相关
- java虚拟机——1
- Hashtable 中Entry[] Index计算
- 归并算法(java 语言实现)
- JAVA学习指南