java 实现单链表逆转详解

实例代码:
class Node {
Node next;
String name;
public Node(String name) {
this.name = name;
}
/**
* 打印结点
*/
public void show() {
Node temp = this;
do {
System.out.print(temp + "->");
temp = temp.next;
}while(temp != null);
System.out.println();
}
/**
* 递归实现单链表反转,注意:单链表过长,会出现StackOverflowError
* @param n
* @return
*/
public static Node recursionReverse(Node n) {
long start = System.currentTimeMillis();
if(n == null || n.next == null) {
return n;
}
Node reverseNode = recursionReverse(n.next);
n.next.next = n;
n.next = null;
System.out.println("递归逆置耗时:" + (System.currentTimeMillis() - start) + "ms...");
return reverseNode;
}
/**
* 循环实现单链表反转
* @param n
* @return
*/
public static Node loopReverse(Node n) {
long start = System.currentTimeMillis();
if(n == null || n.next == null) {
return n;
}
Node pre = n;
Node cur = n.next;
Node next = null;
while(cur != null) {
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
n.next = null;
n = pre;
System.out.println("循环逆置耗时:" + (System.currentTimeMillis() - start) + "ms...");
return pre;
}
@Override
public String toString() {
return name;
}
public static void main(String[] args) {
int len = 10;
Node[] nodes = new Node[len];
for(int i = 0; i < len; i++) {
nodes[i] = new Node(i + "");
}
for(int i = 0; i < len - 1; i++) {
nodes[i].next = nodes[i+1];
}
/* try {
Thread.sleep(120000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
Node r1 = Node.loopReverse(nodes[0]);
r1.show();
Node r = Node.recursionReverse(r1);
r.show();
}
}
总结
对于递归和循环,推荐使用循环实现,递归在单链表过大时,会出现StatckOverflowError,递归涉及到方法的调用,在性能上也弱于循环的实现
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 实现单链表逆转详解
# 实现单链表逆转实例
# Java 反转带头结点的单链表并显示输出的实现过程
# Java实现单链表SingleLinkedList增删改查及反转 逆序等
# Java实现单链表反转的多种方法总结
# Java单链表反转图文教程
# Java实现单链表翻转实例代码
# java实现单链表倒转的方法
# 递归
# 链表
# 推荐使用
# 希望能
# 上也
# 涉及到
# 谢谢大家
# 过大
# println
# gt
# null
# System
# print
# static
# recursionReverse
# return
# StackOverflowError
# param
# class
# brush
相关文章:
网站制作话术技巧,网站推广做的好怎么话术?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
建站之星后台管理:高效配置与模板优化提升用户体验
如何快速启动建站代理加盟业务?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站之星如何开启自定义404页面避免用户流失?
如何配置WinSCP新建站点的密钥验证步骤?
建站上传速度慢?如何优化加速网站加载效率?
建站之星如何一键生成手机站?
如何在腾讯云免费申请建站?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
香港服务器租用每月最低只需15元?
c# 服务器GC和工作站GC的区别和设置
实现虚拟支付需哪些建站技术支撑?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
专业公司网站制作公司,用什么语言做企业网站比较好?
,巨量百应是干嘛的?
如何选择靠谱的建站公司加盟品牌?
如何通过虚拟主机快速完成网站搭建?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何通过西部建站助手安装IIS服务器?
在线制作视频网站免费,都有哪些好的动漫网站?
常州自助建站费用包含哪些项目?
高防服务器租用指南:配置选择与快速部署攻略
网页设计与网站制作内容,怎样注册网站?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
制作旅游网站html,怎样注册旅游网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何用wdcp快速搭建高效网站?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站之星图片链接生成指南:自助建站与智能设计教程
怎么将XML数据可视化 D3.js加载XML
网站设计制作公司地址,网站建设比较好的公司都有哪些?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何访问已购建站主机并解决登录问题?
网站企业制作流程,用什么语言做企业网站比较好?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
广东企业建站网站优化与SEO营销核心策略指南
如何在IIS中新建站点并配置端口与物理路径?
如何高效利用亚马逊云主机搭建企业网站?
如何正确下载安装西数主机建站助手?
建站主机如何安装配置?新手必看操作指南
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
南京网站制作费用,南京远驱官方网站?
小程序网站制作需要准备什么资料,如何制作小程序?
javascript基本数据类型及类型检测常用方法小结
*请认真填写需求信息,我们会在24小时内与您取得联系。