JAVA数据结构之汉诺塔代码实例
2019-04-02 14:21
393 查看
本文实例为大家分享了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数据结构之汉诺塔详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java编程用栈来求解汉诺塔问题的代码实例(非递归)
- JavaScript代码实例:拖动对象 Drag Object (兼容:IE、Firefox、Opera ... )
- 使用Python对Csv文件操作实例代码
- 利用IE打印的一点实例代码
- C#实现关机重启及注销实例代码
- 基于php的基金财务数据接口调用代码实例
- Tab切换组件(选项卡功能)实例代码
- java实现一个扫描包的工具类实例代码
- 基于C#实现的HOOK键盘钩子实例代码
- mysql 字段as详解及实例代码
- 二维码扫码登录详解【附简易实例代码(html+php+ios)】
- AngularJs上传前预览图片的实例代码
- Spring+Junit4进行接口测试实例代码
- C#语言绘制实时曲线图代码实例
- MonkeyRunner_优惠券实例代码(1)
- hibernate实例代码
- 共有继承,保护继承,私有继承的区别c++代码实例
- Opencv检测交通中红色标识轮廓c++代码实例及运行结果
- FreeMarker与SpringMVC整合实例代码教程