Java实现单向链表反转
程序员文章站
2022-04-14 15:03:29
本文实例为大家分享了java实现单向链表反转的具体代码,供大家参考,具体内容如下
1、实现代码
public class linkedlisttest {...
本文实例为大家分享了java实现单向链表反转的具体代码,供大家参考,具体内容如下
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、实现思路
递归:从尾部开始处理
非递归:从头部开始处理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。