需要一些java堆栈的帮助

时间:2012-06-02 06:56:42

标签: java stack

不得不说我是java的新手。最近我正在研究使用java进行考试来实现数据结构。我在下面的代码中找到了基于数组的堆栈。

    class StackX {

    private int maxSize;        // size of stack array
    private long[] stackArray;
    private int top;            // top of stack

   //-------------------------------------------------------------

    public StackX(int s)         // constructor
    {
    maxSize = s;             // set array size
    stackArray = new long[maxSize];  // create array
    top = -1;                // no items yet
    }


   //-------------------------------------------------------------
   public void push(long j)    // put item on top of stack
   {
   stackArray[++top] = j;     // increment top, insert item
   }

我对前三行有什么想法,但我很难理解下面的行。

     maxSize = s;             // set array size

     stackArray = new long[maxSize];  // create array

     top = -1;                // no items yet

有人可以解释为什么在数据类型为 long 的数组中使用 [maxSize] ?不应该是数字,因为数据类型很长。

为什么在推(长j)上使用 long j 时,没有与j相关的变量。

帮助&评论表示赞赏。

3 个答案:

答案 0 :(得分:7)

我建议搜索一些网站或书籍,从头开始,尝试跳入并理解一切对大多数人来说都不适用,但回答你的问题:

stackArray = new long[maxSize];创建一个大小为'maxsize'的新数组,它可以保存long类型的变量。 'maxsize'的类型为int,它是一个整数,并且数组中只能包含一定数量的元素。

使用了

long j,因为这意味着必须在某个时间push(1.0)调用方法,该方法调用push方法并将1.0作为j传递。然后它将它放在位于顶部+1的数组中。

答案 1 :(得分:4)

  

有人可以解释为什么在数据类型为long的数组中使用[maxSize]?不应该是数字,因为数据类型很长。

maxSize是一个整数变量,用于指定创建的数组的大小。所以这句话:

stackArray = new long[maxSize];

创建一个包含maxSize元素的元素(例如20),然后将该数组的引用分配给stackArray变量。

不清楚你的期望是什么,但我建议你阅读Java tutorial section on arrays

  

为什么在push(long j)上使用long j,没有与j相关的变量。

此方法声明:

public void push(long j)

有一个名为j参数。这意味着无论何时调用方法,都必须将long值作为参数传递给方法。该方法调用的参数的初始值与您传入的值相同。从那时起,它就像该方法的局部变量。同样,Java tutorial on methods可能会对您有所帮助。

答案 2 :(得分:0)

有人可以解释为什么在数据类型为long的数组中使用[maxSize]?不应该是数字,因为数据类型很长。

虽然您的数组可能被声明为类型long,但索引仍为int。无论数组的类型是什么,索引都是int。请查看this page上的示例以获取更多信息。

也为什么在推(long j)上使用long j没有与j相关的变量。

查找调用此方法push()的代码,您将找到与j关联的变量。由于您的数组类型为long,因此当您将元素放入此(推送)时,它们也必须是long类型。因此,long j