[英]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.