JAVA数据结构之汉诺塔代码实例
更新时间:2019年04月02日 14:21:53 作者:sl1130398099
这篇文章主要介绍了JAVA数据结构之汉诺塔,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本文实例为大家分享了JAVA数据结构之汉诺塔的具体代码,供大家参考,具体内容如下
package p02.动态链表; import p01.动态数组.Stack; public class LinkedStack<E> implements Stack<E> { private LinkedList<E> list; public LinkedStack(){ list=new LinkedList<>(); } @Override public void push(E e) { // TODO 自动生成的方法存根 list.addFrist(e); } @Override public E pop() { // TODO 自动生成的方法存根 return list.removeFrist(); } @Override public boolean isEmpty() { // TODO 自动生成的方法存根 return list.isEmpty(); } @Override public E peek() { // TODO 自动生成的方法存根 return list.getFrist(); } @Override public int getSize() { // TODO 自动生成的方法存根 return list.getSize(); } @Override public void clear() { // TODO 自动生成的方法存根 list.clear(); } @Override public String toString() { // TODO 自动生成的方法存根 return list.toString(); } }
//用前边实现的链栈去实现汉诺塔 package p03.递归; import p02.动态链表.LinkedStack; public class Hano { public static void main(String[] args) { // String x = "x"; //原始盘 // String y = "y"; //借助盘 // String z = "z"; //最终盘 // move(x,y,z,N); int N=10; LinkedStack<Integer> stackX=new LinkedStack(); for(int i=N;i>=1;i--){ stackX.push(i); } LinkedStack<Integer> stackY=new LinkedStack(); LinkedStack<Integer> stackZ=new LinkedStack(); move(stackX,stackY,stackZ,N); System.out.println(stackX); System.out.println(stackZ); } //定义三个栈,实现其移动 public static void move(LinkedStack<Integer> x,LinkedStack<Integer> y, LinkedStack<Integer> z, int level) { if(level==1){ z.push(x.pop()); }else{ move(x,z,y,level-1); z.push(x.pop()); move(y,x,z,level-1); } } //只打印移动过程。 /*public static void move(String x, String y, String z, int level) { if(level==1){ System.out.println(x+"->"+z); return; } move(x,z,y,level-1); System.out.println(x+"->"+z); move(y,x,z,level-1); }*/ }
以上所述是小编给大家介绍的JAVA数据结构之汉诺塔详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
Idea中如何调出Run dashboard 或services窗口
这篇文章主要介绍了Idea中如何调出Run dashboard 或services窗口问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-03-03Spring Boot中数据库操作Druid和HikariDataSource的详细过程
这篇文章主要介绍了Spring Boot中数据库操作Druid和HikariDataSource的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06
最新评论