这篇文章给大家分享的是有关JAVA数据结构之汉诺塔代码的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
十余年的镇巴网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整镇巴建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“镇巴网站设计”,“镇巴网站推广”以来,每个客户项目都认真落实执行。
具体内容如下
package p02.动态链表; import p01.动态数组.Stack; public class LinkedStackimplements Stack { private LinkedList 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; LinkedStackstackX=new LinkedStack(); for(int i=N;i>=1;i--){ stackX.push(i); } LinkedStack stackY=new LinkedStack(); LinkedStack stackZ=new LinkedStack(); move(stackX,stackY,stackZ,N); System.out.println(stackX); System.out.println(stackZ); } //定义三个栈,实现其移动 public static void move(LinkedStack x,LinkedStack y, LinkedStack 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数据结构之汉诺塔代码的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!