/***@authorluochengcheng

* 定义一个单链表*/

classNode {//变量

private intrecord;//指向下一个对象

privateNode nextNode;public Node(intrecord) {super();this.record =record;

}public intgetRecord() {returnrecord;

}public void setRecord(intrecord) {this.record =record;

}publicNode getNextNode() {returnnextNode;

}public voidsetNextNode(Node nextNode) {this.nextNode =nextNode;

}

}/***@authorluochengcheng

* 两种方式实现单链表的反转(递归、普通)

* 新手强烈建议旁边拿着纸和笔跟着代码画图(便于理解)*/

public classReverseSingleList {/*** 递归,在反转当前节点之前先反转后续节点*/

public staticNode reverse(Node head) {if (null == head || null ==head.getNextNode()) {returnhead;

}

Node reversedHead=reverse(head.getNextNode());

head.getNextNode().setNextNode(head);

head.setNextNode(null);returnreversedHead;

}/*** 遍历,将当前节点的下一个节点缓存后更改当前节点指针

**/

public staticNode reverse2(Node head) {if (null ==head) {returnhead;

}

Node pre=head;

Node cur=head.getNextNode();

Node next;while (null !=cur) {

next=cur.getNextNode();

cur.setNextNode(pre);

pre=cur;

cur=next;

}//将原链表的头节点的下一个节点置为null,再将反转后的头节点赋给head

head.setNextNode(null);

head=pre;returnhead;

}public static voidmain(String[] args) {

Node head= new Node(0);

Node tmp= null;

Node cur= null;//构造一个长度为10的链表,保存头节点对象head

for (int i = 1; i < 10; i++) {

tmp= newNode(i);if (1 ==i) {

head.setNextNode(tmp);

}else{

cur.setNextNode(tmp);

}

cur=tmp;

}//打印反转前的链表

Node h =head;while (null !=h) {

System.out.print(h.getRecord()+ " ");

h=h.getNextNode();

}//调用反转方法

head =reverse2(head);

System.out.println("\n**************************");//打印反转后的结果

while (null !=head) {

System.out.print(head.getRecord()+ " ");

head=head.getNextNode();

}

}

}

java list翻转_JAVA实现两种方法反转单列表相关推荐

  1. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

  2. php给点击的li设置样式,两种方法为LI列表前3行设置样式

    两种方法为LI列表前3行设置样式 蓝叶    网站设计    2014-06-18    9789    10评论 在设计网页模板的时候,为了突出信息的重要性以及美观度,我们会设置一些样式使LI文章列 ...

  3. JAVA中初始化线程的两种方法_java中最简单的方式新起一个线程

    启动一个线程 在一个方法中启动一个线程,有两种方法 第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法) 第二种是,现在方法中new一个线程,然后直接调 ...

  4. 实现JAVA时间加减的两种方法

    JAVA的时间加减 1.获取当前系统时间 Date date = new Date(); 2.实现时间的加减的两种方法 第一种: 用java.text.SimpleDateFormat来实现 Simp ...

  5. Apache Software Foundation Thinking in Java:只要仔细审视,两种方法的使用场合应该是相当明显的

    引论 : 对于继承可能会引发某种争论:继承应该只重载基类的方法(而并不添加在基类中没有的新方法)吗?如果这样做,就意味着导出类和基类是完全相同的类型,因为它们具有完全相同的接口.结果你可以用一个导出类 ...

  6. Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...

    今天对Spring的基础理解又加深了一丢丢. 1 首先Spring的基础配置文件中,主要由以下几个配置文件, 1 <beans xmlns:xsi="http://w3.org/200 ...

  7. Java程序优雅关闭的两种方法(程序停止前做一些善后工作)

    java程序关闭时,往往需要做一些善后工作,称之为优雅关闭.这里介绍两种比较典型的方法: 一.注册关闭钩子 通过调用Runtime.getRuntime().addShutdownHook()方法,添 ...

  8. 【java】StringBuilder的常用两种方法与练习

    String Builder 1.定义:一种比String更灵活,长度可变的字符串类 2.构造方法 package com.ljh.StringBuilderDemo;/*** @Author: lj ...

  9. java+map申明_Java中两种HashMap申明方式区别?

    Map是HashMap的父类,第一种声明方式是:父类的引用指向子类的对象,是多态的一种表现形式:第二种是:使用本身引用.举个例子: 第一种声明方式是实现了多态,多态后就可以写出一段所有子类都通用的代码 ...

最新文章

  1. linux sql server客户端,Linux的MS SQL Server客户端SQuirrel SQL Client
  2. Mybatis常见面试题总结(详细)
  3. java mock什么意思_java @Mock, @MockBean 与 Mockito.mock( ) 之间的差异
  4. 实践中的事件源和CQRS
  5. csv转json文件
  6. ajax json 403,解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式
  7. 无处不在的container_of
  8. 自定义注解 相关知识汇总(转)
  9. 微软Windows Server 2008认证体系详细介绍
  10. 运维基础--用户的权限管理
  11. php算法不大于n的质数,php求不大于n的质数
  12. golang errors 取 错误 信息_golang-标准errors包的学习
  13. websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
  14. DSP课设项目(ICETEK-VC5509-EDU)
  15. SQL学习笔记04 极客时间 SQL必知必会50讲
  16. 【原创】从文华财经下载数据并且分析每个期货品种的贝塔值-云金杞
  17. 通过这些快捷键解决YouTube的“空格键问题”
  18. seo单页html模板,竞价单页模板设计思路
  19. 80psi等于多少kpa_kpa与psi的换算(kpa与psi对照表)
  20. 软件环境(dev、sit、uat、prod、test)

热门文章

  1. When allowCredentials is true, allowedOrigins cannot contain the special value “*“ that cannot be
  2. 策略模式+工厂模式(反射)+枚举代替 大量 if..else if..
  3. ant压缩和解压缩工具类
  4. 小程序开发(8)-之跳转第三方小程序设计
  5. Java-类加载器-类运行时结构-。。。。
  6. BeanUtils对象之间的复制
  7. wget连接指定端口_新技能:wget参数有用过吗?
  8. 子网规划与组网实验_【干货】从0到1,“大型WLAN组网”基础知识分享~
  9. mysql主从复制周期_Mysql主从复制的实现
  10. python循环迭代_Python中循环迭代的重做