使用堆栈的Java河内塔

时间:2011-10-22 16:33:14

标签: java stack towers-of-hanoi

我正在编写一个程序来玩Java中的河内游戏塔。我们将使用堆栈来表示塔。我有一个3个堆栈的数组,其中两个我初始化为空,最后一个用用户定义的光盘填充。我有一个Hanoi类文件,所以我们可以使用Hanoi构造函数,它接受一个整数并创建一个这样大小的光盘。我无法搞清楚我的初始化方法将光盘推入堆栈的代码(它们的大小是它们位置的镜像,因此光盘1的大小为1等等。)任何帮助都会受到赞赏。

这是我的Hanoi类光盘构造函数:

public class Hanoi{

private int discSize; //size (radius) of the disc 

public Hanoi(int size){ //creates a disk of the specifed size
    discSize = size;
}

我的初始化方法

    public static Stack<Hanoi>[] initialize(int n){

   System.out.println("How many discs in the game?");
   Scanner sc = new Scanner(System.in);
   int numDisc = sc.nextInt();
   int size = numDisc;

   Stack<Hanoi>[] tower = new Stack[3];
    for (int i = 0; i < 3;i++){
      tower[i] = new Stack<Hanoi>();
    }
    }


    Hanoi.PrintStacks(tower);
    // System.out.println(hanoi[2].peek());
     return tower;

这应该将所有这些都初始化为空。那么我应该根据用户输入为每个磁盘创建一个新的Hanoi对象,并将它们按相反的顺序推送到堆栈?

1 个答案:

答案 0 :(得分:1)

  

那么我应该根据用户输入为每个磁盘创建一个新的hanoi对象,并按相反顺序将它们推送到堆栈中?

for (int i = numDisc; i > 0; --i)
    tower[0].push(new Hanoi(i));