JAVA数据结构之汉诺塔代码实例

网友投稿 286 2023-01-09


JAVA数据结构之汉诺塔代码实例

本文实例为大家分享了java数据结构之汉诺塔的具体代码,供大家参考,具体内容如下

package p02.动态链表;

import p01.动态数组.Stack;

public class LinkedStack implements 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.动态链表.LinknWGfYgTedStack;

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);

}

//定义三个栈,实现其移动

publinWGfYgTc 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数据结构之汉诺塔详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:子类继承父类要实现接口吗(父类实现接口 子类继承)
下一篇:自动化接口测试工具有哪些(自动化接口测试工具有哪些类型)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~