簡體   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