单链表翻转比如有如下链表:

需要按照C B A 输出,我们可以有好几种方法:

package org.andy.test;import java.util.ArrayList;
import java.util.List;/*** @author andy* @version:2015-2-4 上午9:41:12* * */public class LinkedReverse {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubN n = new N();n.name = "A";N n1 = new N();n1.name = "B";N n2 = new N();n2.name = "C";N n3 = new N();n3.name = "D";n1.nextN = n2;n.nextN = n1;n2.nextN = n3;N old = n;while (old != null) {System.out.println(old.name);old = old.nextN;}System.out.println("链表翻转1");N new1 = reverseOne(n);while (new1 != null) {System.out.println(new1.name);new1 = new1.nextN;}/*System.out.println("链表翻转2");N new2 = reverseTwo(n, null);while (new2 != null) {System.out.println(new2.name);new2 = new2.nextN;}System.out.println("链表翻转3");N new3 = reverseThree(n);while (new3 != null) {System.out.println(new3.name);new3 = new3.nextN;}*/}//采用交换前后值public static N reverseOne(N n) {if (n != null) {N preN = n; //前一个节点N curN = n.nextN; //当前节点N nextN ;   //后一个节点while (null != curN) {nextN = curN.nextN;curN.nextN = preN;preN = curN;curN = nextN;}n.nextN = null;n = preN;return n;}return null;}//采用递归实现public static N reverseTwo(N n, N newN) {// 采用递归 返回 返回条件是最后一个几点nextN为空if (n == null) {return newN;}N nextN = n.nextN;n.nextN = newN;return reverseTwo(nextN, n);}//最烂的实现方式public static N reverseThree(N n) {if (n == null) {return null;}// 定义一个集合 ,放在集合里面在单个反向指回List<N> nList = new ArrayList<N>();N p = n;while (p != null) {N node = new N();// 当前节点node.name = p.name;nList.add(node);p = p.nextN;}// 在返现输出节点n = null;for (N rn : nList) {if (n != null) {// 如果n不为空时rn.nextN = n;}n = rn;}return n;}}// 定义一个节点
class N {public String name;public N nextN;
}

Java实现单链表翻转相关推荐

  1. java 单链表反转_Java实现单链表翻转详解

    单链表翻转比如有如下链表: 需要按照C B A 输出,我们可以有好几种方法: package org.andy.test; import java.util.ArrayList; import jav ...

  2. c语言双链表排序交换节点_图解:单链表翻转的三种方式!

    当我们在聊到链表反转的时候,一定说的都是单链表,双链表本身就具有前驱指针 Prev 和后续指针 next,无需进行翻转. 单链表反转,反转后的效果如下: 看起来很简单,只需要将单链表所有结点的 nex ...

  3. java实现单链表常见操作,java面试题,java初级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 一. ...

  4. 将单链表翻转的两种方法

    单链表翻转很容易理解,例如: 输入: NODE1->NODE2->NODE3->NODE4->NODE5->NULL 输出: NODE5->NODE4->NO ...

  5. java单链表通讯录_[Java教程]用java实现单链表(菜鸟出征)

    [Java教程]用java实现单链表(菜鸟出征) 0 2016-03-24 14:00:06 package code;class Node{ Node next; int data; public ...

  6. Java实现单链表、栈、队列三种数据结构

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:远航 cnblogs.com/yang-guang- ...

  7. 【算法数据结构Java实现】Java实现单链表

    1.背景 单链表是最基本的数据结构,仔细看了很久终于搞明白了,差不每个部分,每个链都是node的一个对象.需要两个参数定位:一个是index,表示对象的方位.另一个是node的对象. 2.代码 nod ...

  8. Java实现单链表反转操作

    单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据.二是指针域,用于存储下一个节点的地址.在Java中定义如下: public class ...

  9. java单链表_(java实现)单链表

    什么是单链表 在了解单链表之前,你知道什么是链表吗?如果你不知道什么是链表,可以看看我的这篇博客 单链表是链表的其中一种基本结构.一个最简单的结点结构如图所示,它是构成单链表的基本结点结构.在结点中数 ...

  10. java实现单链表常见操作

    一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...

最新文章

  1. 所有各数据库或文件的连接串定义CHM文件.
  2. sklearn数据预处理-scale
  3. phpstorm 2017.1.3编辑远程项目
  4. https://toonify.photos/ for Disney style
  5. 导航跳转后保持选中状态 jquery高亮当前选中菜单
  6. 记一次 .NET 某流媒体独角兽 API 句柄泄漏分析
  7. layui弹出层:使用icon图标小结
  8. MxNet 迁移学习实现深度学习分类
  9. mahout中kmeans算法和Canopy算法实现原理
  10. 软件开发计划_敏捷软件开发实践:估算与计划读书笔记125第23章 案例分析:Bomb Shelter Studio...
  11. CodeForces - 558DGuess Your Way Out! II(map 扫描线)
  12. UiBot 网页数据抓取
  13. 计算机顶会:投稿时间 会议介绍
  14. 美国大学计算机科学gpa,美国大学gpa计算
  15. 关闭word后自动打开新的文档
  16. Stub和Mock的区别
  17. 2022杭电多校八 1011-Stormwind(贪心)
  18. Windows垃圾文件清理(批处理BAT清理垃圾文件)
  19. 谈谈幼儿时期的孤独和成年后的残忍
  20. 转:著名的100个管理定律点评7 - 创新是企业的生命

热门文章

  1. html扩展名用于保存清单文件,html5 – HTML 5缓存清单是否也适用于ajax请求?
  2. Linux tcp数据分节接收,TCP的建立和终止 图解
  3. Crashing Balloon ZOJ1003
  4. git add/rm/mv文件到暂存区
  5. 基本数据类型及其对应的包装类
  6. not是什么意思在c语言,为什么在C样式语言中逻辑NOT运算符是“!”而不是“ ~~”?...
  7. 检测1的个数_面部皮肤检测仪是美容院的新套路吗?
  8. cad相对坐标快捷键_CAD入门必记的15个命令,只要熟悉这15个命令几乎就可以走遍天下...
  9. PoisonApple:针对macOS的持久化工具
  10. linux texlive 中文,Ubuntu 安装 TexLive2013 及中文支持