堆栈阵列是已经弹出的打印元素

时间:2014-11-04 04:21:18

标签: java arrays stack

在堆栈数组实现中推送和弹出元素后,我希望打印出堆栈数组。当我使用下面的print方法时,它会打印出包含所有元素的数组,包括应该弹出的元素(因此应该消失)。为什么这样做?这是正常的,还是我的代码有问题?

如果我使用isEmpty()方法,它会识别它是空的,但是在打印堆栈时,它会打印所有元素,就好像它们从未被弹出一样。堆栈是空的,它实现了它,所以为什么不打印空堆栈或抛出异常?

这是堆栈数组类中的print方法。

public void print()
{
  for (String string : array)
   {
     if (string != null)
     {
       System.out.println(string);
     }
   }
}

除了这种方法之外,确实没有任何异常,但如果它有帮助,我也可以发布pop()push()方法。困扰我的主要事情是,在弹出元素之后但它仍然不是空的,我想看看堆栈数组中剩下的是什么。然而,它不是打印剩下的东西,而是打印所有内容。如何在没有已经弹出的元素的情况下打印堆栈数组?

1 个答案:

答案 0 :(得分:0)

好吧,如果您的堆栈由数组支持,则在打印堆栈内容时不应该打印整个数组(因为该数组具有固定长度,并且打印它将始终打印固定数量的元素,无论Stack的当前内容如何)。

您必须拥有索引,告诉您该堆栈正在使用该阵列的哪些元素。如果堆栈的末尾(输入的第一个元素)是数组的第一个元素(0索引),则必须有一些索引指向堆栈的头部,从中弹出元素。在这种情况下,您的打印方法应如下所示:

public void print()
{
  for (int i=0;i<head;i++)
   {
       System.out.println(array[i]);
   }
}

这假设当堆栈为空时head == 0。