亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有兩個堆棧的 minstack 實現,在 Pop 條件下失敗

具有兩個堆棧的 minstack 實現,在 Pop 條件下失敗

慕容708150 2021-12-30 16:33:13
我正在實現一個minstack算法并且遇到了一些奇怪的事情,也許我在這里缺少“某些堆棧概念”或“某些 Java 概念”。我正在使用兩個堆棧(st 和 st2)來執行我的 minstack 操作。下面是我在 if 條件下失敗的 pop 方法:方法 1 - 失敗:public void pop() {        if(st.pop() == st2.peek())            st2.pop();    }下面是當我將 st.pop() 結果存儲在變量“a”中時工作正常的 Pop 方法:方法 2 - 通過:public void pop() {    int a = st.pop();    if(a == st2.peek())        st2.pop();}請假設堆棧中都有整數元素,并且值 fromst.pop()等于st2.peek()。我想了解為什么在st.pop()方法 1 的 if 狀態下不起作用而在將結果存儲st.pop()到臨時變量后在方法 2 中起作用的區別a
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

如果我對問題的理解正確,st.pop()則在第一種方法中不起作用,因為 st 中的元素類型從未明確說明(即 st 可以像 一樣初始化Stack st = new Stack();)。

結果,任何對象(不一定是 int)都可以被壓入堆棧,因此當堆棧被彈出時,不清楚返回的是什么數據類型,從而導致 if 語句失敗。

在第二種方法中,彈出的項目在變量 a 中顯式定義為 int,因此當與 a 進行比較時,if 語句按預期工作。


查看完整回答
反對 回復 2021-12-30
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號