这篇文章给大家分享的是有关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;
LinkedStack stackX=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数据结构之汉诺塔代码的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!