JAVA单链表反转
来源:互联网 发布:软件运营部门 编辑:程序博客网 时间:2024/06/03 14:42
非递归的方法,直接代码:
class Node { public int value; public Node next; public Node() { } public Node(int value) { this.value = value; }}public class ReverseLinkedNode { public static void main(String[] args) { Node node1 = new Node(1); Node node2 = new Node(4); Node node3 = new Node(2); Node node4 = new Node(0); node1.next = node2; node2.next = node3; node3.next = node4; printAllNode(node1); Node newHead = reverseLinkedNode(node1); printAllNode(newHead); } public static void printAllNode(Node node){ while(null != node){ System.out.println(node.value); node = node.next; } } public static Node reverseLinkedNode(Node node){ if(null == node || null == node.next){ return node; } Node curNode = node.next; //注意头结点要更新为空 node.next = null; Node nextNode = null; while(null != curNode){ //暂存当前待处理节点的下一个,防止链条断了 nextNode = curNode.next; //当前待处理节点指向当前的头结点 curNode.next = node; //当前的头结点更新为上面的当前待处理节点 node = curNode; //上面的当前待处理节点更新为上面暂存的下一个,如此循环到终点 curNode = nextNode; } return node; }}
递归时,遍历到最后一个节点,往前逐个更新链条即可
//递归方式 public static Node reverseLinkedNodeOne(Node node) { if (null == node || null == node.next) { return node; } else { Node curNext = reverseLinkedNodeOne(node.next); node.next.next = node; node.next = null; return curNext; } }
阅读全文
0 0
- Java单链表反转与部分反转
- Java实现单链表反转
- Java实现反转单链表
- Java-反转单链表
- Java反转单链表
- Java 反转单链表
- java反转单链表
- Java反转单链表(code)
- Java反转单链表(code)
- Java反转单链表
- java反转单链表
- 反转单链表(Java描述)
- 单链表反转--Java实现
- Java实现单链表反转
- java 单链表反转详解
- 单链表反转--java版
- 单链表反转java
- Java单链表反转
- 自定义订单frament和适配器
- 使用C语言操作bitmap(彩色变灰色,黑白)
- Linux安装JDK详细步骤
- redis
- 相关系数评价标准的相关知识
- JAVA单链表反转
- this关键字的理解
- java的集合中的Set以及set的实现类HashSet和TreeSet
- SQlite3基本用法,使用sublime编辑器
- 咒语
- 4-1·NTP服务器配置搭建
- 2746:约瑟夫问题
- 设计思想学习—装饰者模式
- js关于setTimeout实现延时执行函数并进行传参