繁体   English   中英

堆栈数组是打印已弹出的元素

[英]Stack Array is Printing Elements that have already been Popped

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

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

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

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

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

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

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

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

假设堆栈为空时,head == 0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM