Java实现单链表翻转实例代码
2017-03-24 14:01
1056 查看
Java实现单链表反转,递归和非递归两种形式
/** * 反转单链表 */ /** * 定义链表 * * @author 16026 * */ class Node { int val; Node next; public Node(int val) { this.val = val; } } public class ReverseList { /** * 反转链表 * * @param head * @return */ public static Node reverseList(Node head) { if (head == null || head.next == null) { return head; } Node reHead = null;// 定义新链表头结点 while (head != null) { Node cur = head.next;// 记录下一个节点 head.next = reHead;// 将rehead节点连接到head节点上 reHead = head;// 让rehead指向head head = cur;// 将head指向下一个节点 } return reHead; } /** * 递归反转链表 * * @param head * @return */ public static Node reverseList2(Node head) { if (head == null || head.next == null) return head; Node rehead = reverseList2(head.next); head.next.next = head;// 将头节点置于末端 head.next = null;// 防止链表循环 return rehead; } /** * 打印链表 * * @param head */ public static void printList(Node head) { if (head == null) return; while (head != null) { System.out.print(head.val + " "); head = head.next; } } /** * 测试 * * @param args */ public static void main(String[] args) { 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; // Node rehead = reverseList(n1); Node rehead = reverseList2(n1); printList(rehead); } }
运行结果如下:
以上所述是小编给大家介绍的Java实现单链表翻转实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- Java 实现单链表翻转代码
- java 实现单链表逆转详解及实例代码
- Wpf图片变换一:通过WPF实现图片的扩大、缩小、翻转、移动实例代码
- Java泛型类实例,使用链表来实现一个堆栈类
- 实现了基于TCP的Java Socket编程实例代码
- java单链表代码实现
- java实现链表指定值得删除,查找第二部分代码
- 利用链表实现队列的Java代码
- java 实现约瑟夫环的实例代码
- java文件操作代码片断实例实现统计文件中字母出现的个数功能
- java代码实现通讯录实例,我不知道这有什么用。,
- java单链表代码实现
- Java实现嵌入式数据库(文本数据库)代码实例
- Java实现的基于socket通信的实例代码
- java代码实例 使用switch实现简易的计算器(实现加减乘除)
- java反射实现javabean转json实例代码
- java实现连接db2数据库的代码实例
- java代码实例 使用switch实现简易的计算器(实现加减乘除)
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- java随机验证码生成实现实例代码