Java反转单链表
JAVA 反转 单链
2023-09-11 14:21:55 时间
- class Node {
- private int data;
- private Node nextNode;
- public Node(int data) {
- this.data = data;
- }
- public int getData() {
- return data;
- }
- public void setData(int data) {
- this.data = data;
- }
- public Node getNextNode() {
- return nextNode;
- }
- public void setNextNode(Node nextNode) {
- this.nextNode = nextNode;
- }
- }
- public class ReverseSingleList {
- public static Node reverse(Node head) {
- if (null == head || null == head.getNextNode()) {
- return head;
- }
- Node reversedHead = reverse(head.getNextNode());
- head.getNextNode().setNextNode(head);
- head.setNextNode(null);
- return reversedHead;
- }
- public static Node reverse2(Node head) {
- if (null == head || null == head.getNextNode()) {
- return head;
- }
- Node node1 = head;
- Node node2 = head.getNextNode();
- head.setNextNode(null);
- while (null != node2) {
- node1 = node2;
- node2 = node2.getNextNode();
- node1.setNextNode(head);
- head = node1;
- }
- return head;
- }
- public static void main(String[] args) {
- Node head = new Node(0);
- Node cur = head;
- Node tmp = null;
- // 构造一个长度为10的链表,保存头节点对象head
- for (int i = 1; i < 10; i++) {
- tmp = new Node(i);
- cur.setNextNode(tmp);
- cur = tmp;
- }
- //打印反转前的链表
- Node h = head;
- while (null != h) {
- System.out.print(h.getData() + " ");
- h = h.getNextNode();
- }
- //调用反转方法
- //head = reverse(head);
- head = reverse2(head);
- System.out.println("\n**************************");
- //打印反转后的结果
- while (null != head) {
- System.out.print(head.getData() + " ");
- head = head.getNextNode();
- }
- }
- }
运行结果:
0 1 2 3 4 5 6 7 8 9
**************************
9 8 7 6 5 4 3 2 1 0
相关文章
- <转载>C#与JAVA的区别 http://www.cnblogs.com/Asa-Zhu/archive/2012/11/08/2761114.html
- Hibernate中使用Criteria查询及注解——(DeptTest.java)
- java: Thread 和 runnable线程类
- Java IO 之 OutputStream源码
- Java实现 蓝桥杯 算法训练 Bit Compressor(暴力)
- Java实现 LeetCode 452 用最少数量的箭引爆气球
- Java实现 LeetCode 92 反转链表 II
- Java实现 洛谷 P2089 烤鸡
- java实现串的反转
- Java实现 蓝桥杯VIP 算法训练 接水问题
- 利用 Arthas 精准定位 Java 应用 CPU 负载过高问题
- 【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)
- (转载)java多态(2)-------Java转型(向上或向下转型)
- [Kotlin] Using Kotlin from Java
- java异常处理
- java操作minio:创建bucket及上传文件,client version 7.0.2
- 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- Java工程师学习步骤
- Java面试题:如何将字符串反转?(翻转字符串)
- Simple Logging Facade for Java (SLF4J)作用(java日志框架)
- Java 关于java.util.LinkedHashMap cannot be cast to 实体类问题答案
- 蓝桥杯2019省赛——外卖店优先级(Java)
- java同步和互斥程序说明(一)
- 【腾讯阿里最全面试题】Java 线程池的实现原理,ThreadPoolExecutor关键参数解释...
- 详解jvm之java类加载机制和类加载器(ClassLoader) 深入理解Java类加载器(ClassLoader) 如何自定义类加载器 深入说明双亲委派 双亲委派模型的破坏者-线程上下文类加载器
- 【JAVA】【NIO】5、Java NIO Scatter / Gather
- Java 抽象工厂模式
- 华为的JAVA面试题及答案(部分)
- 【java】Java 多态
- JAVA开发讲义(二)-Java程序设计之数据之谜二