java list翻转_JAVA实现两种方法反转单列表
/***@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实现两种方法反转单列表相关推荐
- java 匿名list,java创造匿名对象的两种方法
在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...
- php给点击的li设置样式,两种方法为LI列表前3行设置样式
两种方法为LI列表前3行设置样式 蓝叶 网站设计 2014-06-18 9789 10评论 在设计网页模板的时候,为了突出信息的重要性以及美观度,我们会设置一些样式使LI文章列 ...
- JAVA中初始化线程的两种方法_java中最简单的方式新起一个线程
启动一个线程 在一个方法中启动一个线程,有两种方法 第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法) 第二种是,现在方法中new一个线程,然后直接调 ...
- 实现JAVA时间加减的两种方法
JAVA的时间加减 1.获取当前系统时间 Date date = new Date(); 2.实现时间的加减的两种方法 第一种: 用java.text.SimpleDateFormat来实现 Simp ...
- Apache Software Foundation Thinking in Java:只要仔细审视,两种方法的使用场合应该是相当明显的
引论 : 对于继承可能会引发某种争论:继承应该只重载基类的方法(而并不添加在基类中没有的新方法)吗?如果这样做,就意味着导出类和基类是完全相同的类型,因为它们具有完全相同的接口.结果你可以用一个导出类 ...
- Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...
今天对Spring的基础理解又加深了一丢丢. 1 首先Spring的基础配置文件中,主要由以下几个配置文件, 1 <beans xmlns:xsi="http://w3.org/200 ...
- Java程序优雅关闭的两种方法(程序停止前做一些善后工作)
java程序关闭时,往往需要做一些善后工作,称之为优雅关闭.这里介绍两种比较典型的方法: 一.注册关闭钩子 通过调用Runtime.getRuntime().addShutdownHook()方法,添 ...
- 【java】StringBuilder的常用两种方法与练习
String Builder 1.定义:一种比String更灵活,长度可变的字符串类 2.构造方法 package com.ljh.StringBuilderDemo;/*** @Author: lj ...
- java+map申明_Java中两种HashMap申明方式区别?
Map是HashMap的父类,第一种声明方式是:父类的引用指向子类的对象,是多态的一种表现形式:第二种是:使用本身引用.举个例子: 第一种声明方式是实现了多态,多态后就可以写出一段所有子类都通用的代码 ...
最新文章
- linux sql server客户端,Linux的MS SQL Server客户端SQuirrel SQL Client
- Mybatis常见面试题总结(详细)
- java mock什么意思_java @Mock, @MockBean 与 Mockito.mock( ) 之间的差异
- 实践中的事件源和CQRS
- csv转json文件
- ajax json 403,解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式
- 无处不在的container_of
- 自定义注解 相关知识汇总(转)
- 微软Windows Server 2008认证体系详细介绍
- 运维基础--用户的权限管理
- php算法不大于n的质数,php求不大于n的质数
- golang errors 取 错误 信息_golang-标准errors包的学习
- websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
- DSP课设项目(ICETEK-VC5509-EDU)
- SQL学习笔记04 极客时间 SQL必知必会50讲
- 【原创】从文华财经下载数据并且分析每个期货品种的贝塔值-云金杞
- 通过这些快捷键解决YouTube的“空格键问题”
- seo单页html模板,竞价单页模板设计思路
- 80psi等于多少kpa_kpa与psi的换算(kpa与psi对照表)
- 软件环境(dev、sit、uat、prod、test)
热门文章
- When allowCredentials is true, allowedOrigins cannot contain the special value “*“ that cannot be
- 策略模式+工厂模式(反射)+枚举代替 大量 if..else if..
- ant压缩和解压缩工具类
- 小程序开发(8)-之跳转第三方小程序设计
- Java-类加载器-类运行时结构-。。。。
- BeanUtils对象之间的复制
- wget连接指定端口_新技能:wget参数有用过吗?
- 子网规划与组网实验_【干货】从0到1,“大型WLAN组网”基础知识分享~
- mysql主从复制周期_Mysql主从复制的实现
- python循环迭代_Python中循环迭代的重做