单链表翻转比方有例如以下链表:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3NoaXp0eQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

须要依照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<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实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  2. java实现单链表的增删功能

    JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...

  3. 用python介绍4种常用的单链表翻转的方法

    这里给出了4种4种常用的单链表翻转的方法,分别是: 开辟辅助数组,新建表头反转,就地反转,递归反转 # -*- coding: utf-8 -*- ''' 链表逆序 ''' class ListNod ...

  4. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  5. 使用java实现单链表(转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html)

    使用java实现单链表----(java中的引用就是指针)转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html ? 1 2 3 4 5 6 7 ...

  6. 用Java实现单链表的基本操作

    笔试题中经常遇到单链表的考题,下面用java总结一下单链表的基本操作,包括添加删除节点,以及链表转置. package mars; //单链表添加,删除节点 public class ListNode ...

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

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

  8. Java实现单链表的快速排序和归并排序

    本文描述了LeetCode 148题 sort-list 的解法. 题目描述如下: Sort a linked list in O(n log n) time using constant space ...

  9. 数据结构——Java实现单链表

    一.分析 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点由元素和指针构成.在Java中,我们可以将单链表定义成一个类,单链表的基 ...

随机推荐

  1. Windows下VS2017编译OpenCV 3.4.0-rc

    简述 很久没有用过OpenCV了,这次需要做一点图像处理相关的工作,又需要用起来,这里记录一下编译的过程.之前介绍过使用vs2015编译opencv2.4的帖子在这里. 编译好的文件在这里https: ...

  2. windows下 jemalloc编译

    准备 Windows下使用VS2015进行编译,需要使用cmake构建版本.(如果有cygwin,在其中执行VS的vcvarsall.bat后使用"CC=cl ./autogen.sh&qu ...

  3. 转 安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法

    ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':/home/king/php-5.2.13/ext/iconv/ ...

  4. Linux修改终端提示符

    打开~/.bashrc可以看到命令提示的内容为:\u@\h\w\$ \u表示用户名,\h表示主机名,\w表示当前目录,\$表示命令提示符(普通用户$,超级用户#) 这个命令提示符有点长,很碍事,\u@ ...

  5. 基于 CoreText 实现高性能 UITableView

    引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...

  6. 实测iOS Dynamic Framework 对 App 启动时间的影响效果

    最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...

  7. google开发新人入职100天,聊聊自己的经验&教训 个人对编程和开发的理解 技术发展路线

    新人入职100天,聊聊自己的经验&教训 这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果 ...

  8. jquery 滑动取值

    JavaScript 滑动条效果 jquery 滚动条插件 仿iphone苹果横行滚动条美化样式商品图片展示

  9. openstack rpc机制

    一.概述: 在openstack项目中,api的调用规则: 跨项目:如nova调用keystone, glance,cinder等,使用rest api(通过相应的python-XXXclient 库 ...

  10. 使用Beetle简单构建高性能Socket tcp应用

    beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列.除了 ...