如何构造需要大量非恒定堆的类

时间:2019-02-20 18:46:48

标签: java class constructor queue

在String [] args中输入的程序看起来像这样123 0 0,其中,河内塔的每个杆都用空格分隔,每个1位数的整数表示该大小的磁盘。

如何制作HanoiState类,使我可以保存作为输入提供的当前状态,并进行设置,以便将任何磁盘从杆的顶部移至杆的顶部(在本例中为“ 1”)杆到与其相邻的杆很简单。

命令行提示符示例:$ java hanoi 123 0 0或$ java hanoi 12 0 4 0

我当时想在解析输入后为n个杆构建n个优先级队列。但是,杆数不是恒定的,我不确定如何编写。

是否还可以构造一个优先级队列数组?或优先级队列列表?

public static class HanoiState {
    public HanoiState(int rods){

    }
}

 public static void main(String[] args) {
    if (args.length < 3) {
        return;
    }
    HanoiState a = new HanoiState(args.length - 1);

1 个答案:

答案 0 :(得分:1)

每个杆都是一叠圆盘,因此请使用Stack类(java.util.Stack)。然后,您可以使用push(item)pop()方法来放置整数并从每个标尺的顶部取整数。

因此,每个标尺是Stack中的Integers。要从杆n中取出碟片,请呼叫rods[n].pop(),然后将尺寸为i的碟片放到杆n上,呼叫rods[n].push(i)

import java.util.Stack;

public class HanoiState {
    Stack<Integer>[] rods;

    public HanoiState(int numOfRods){
        this.rods = (Stack<Integer>[]) new Stack[numOfRods];
    }
}