博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现单向链表反转
阅读量:5141 次
发布时间:2019-06-13

本文共 2203 字,大约阅读时间需要 7 分钟。

0. 环境:

Java: jdk1.8.0_91

1. 代码

public class LinkedListTest {    public static void main(String[] args) {        Node A = new Node("A");        Node B = new Node("B");        Node C = new Node("C");        Node D = new Node("D");        Node E = new Node("E");        Node F = new Node("F");        A.next = B;        B.next = C;        C.next = D;        D.next = E;        E.next = F;        print(A);        LinkedListReversor reversor = LinkedListReversor.RECURSION;        System.out.println(reversor.getStrategy() + ":");        Node tmp = reversor.execute(A);        print(tmp);        reversor = LinkedListReversor.NO_RECURSION;        System.out.println(reversor.getStrategy() + ":");        print(reversor.execute(tmp));    }    private static void print(Node node) {        while (node != null) {            System.out.print(node.value);            node = node.next;            if (node != null) {                System.out.print("->");            } else {                System.out.println();            }        }    }}class Node {    public String value;    public Node next;    public Node(String value) {        this.value = value;    }}enum LinkedListReversor {    RECURSION("递归") {        @Override        public Node execute(Node node) {            Node prev = null;            if (node == null || node.next == null) {                prev = node;            } else {                Node tmp = execute(node.next);                node.next.next = node;                node.next = null;                prev = tmp;            }            return prev;        }    },    NO_RECURSION("非递归") {        @Override        public Node execute(Node node) {            Node prev = null;            while (node != null) {                Node tmp = node;                node = node.next;                tmp.next = prev;                prev = tmp;            }            return prev;        }    };    private String strategy;    private LinkedListReversor(String strategy) {        this.strategy = strategy;    }    public abstract Node execute(Node node);    public String getStrategy() {        return strategy;    }}

2. 实现思路

  • 递归:从尾部开始处理

  • 非递归:从头部开始处理

转载于:https://www.cnblogs.com/hiver/p/7008112.html

你可能感兴趣的文章
Date Picker控件:
查看>>
你的第一个Django程序
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>