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

需要按照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 stub

N 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 nList = new ArrayList();

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;

} 转自:http://blog.csdn.net/fengshizty/article/details/44460243

java 单链表反转_Java实现单链表翻转详解相关推荐

  1. java读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  2. java编程50实例_java编程实例大全及详解谜底(50例).doc

    java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...

  3. java list 移除_java 中List删除实例详解

    java 中List删除实例详解 1.循环删除List中的元素 public static void main(String[] args) { List t=new ArrayList(); for ...

  4. java中throws用法_java中throws实例用法详解

    在程序出现异常时,会有一个抛出异常的throw出现,这里我们要跟今天所讲的throws区分开.throws的作用是声明抛出,在名称上也跟throw有所不同.下面我们就throws对策概念.语法.实例带 ...

  5. java做jsp问题_java/jsp中 中文问题详解

    java/jsp中 中文问题详解 更新时间:2006年10月13日 00:00:00   作者: 预备知识: 1.字节和unicode Java内核是unicode的,就连class文件也是,但是很多 ...

  6. java 读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  7. java 自定义异常实例分析_Java自定义异常类的实例详解

    Java自定义异常类的实例详解 为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写.我们常用的类ArithmeticException,NullPointerException,Ne ...

  8. java使用变量输出_JAVA定义变量与输出详解

    一些重要知识 一个源文件里只能有一个public类,其它类数量不限.文件名与public类名相同 java程序严格区分大小写 JAVA应用程序的执行入口是main方法固定写法:public stati ...

  9. java闰年判断原理_java 面试题闰年判断详解及实例

    java 面试题闰年判断详解及实例 java 闰年判断 前言: 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数: 2. 年份是400 ...

  10. java语言数据库编程_JAVA语言数据库编程实例详解

    本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...

最新文章

  1. 基于java nio的memcached客户端——xmemcached
  2. 微信、移动端css布局的那些坑
  3. Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩...
  4. GitLab 简易指引(三):备份与恢复
  5. void readstring( char s[] ); 怎样_char *s和char s[]
  6. scrapy中自定义过滤规则以及start_urls不进过滤器的问题
  7. shiro-cas------配置从数据库获取用户
  8. 3x3矩阵怎么求逆矩阵_矩阵型组织结构,郭士纳与任正非都是怎么说的?
  9. IDEA调试代码F7、F8、F9
  10. python excel操作 bom_Python Pandas比较BOM表数据
  11. 10种防止网络被攻击的方法
  12. easy excel 设置某一列的格式
  13. 坚果pro2刷回官方_锤子坚果Pro2手机降回6.0.3版本教程
  14. One Mathematic Problem
  15. 【冷启动】快手《POSO: Personalized Cold Start Modules for Large-scale Recommender Systems》
  16. android 统一推送平台,工信部实验室成立安卓统一推送联盟:推送服务将实现统一...
  17. 网络学习-6.VLAN
  18. mysql中的不等于_sql中怎么表示“不等于”(数据库,SQL)
  19. 磁盘分区、格式化及 LVM 管理
  20. 实现简单的三D立方体自动旋转

热门文章

  1. 同步助手iphone4_88 元淘来的 iPhone 4 降级到 iOS 6,甚至还能跑 “大型游戏”
  2. linux使用什么ide编译安卓,抛弃IDE,使用gradle命令与vim构建安卓应用
  3. Windows 环境安装 RabbitMQ
  4. hibernate 乐观锁与悲观锁使用
  5. ReactNative之Flex布局总结
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的闲置物品交易平台
  7. jsp显示服务器路径下的图片,jsp 从服务器获取图片路径
  8. python中MySQLdb模块用法实例
  9. 一个想法照进现实-《IT连》创业项目:万事开头难
  10. SQL_server 数据库备份信息查看