全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 实现单链表逆转详解及实例代码

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小时内与您取得联系。