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

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

如何使用兩個堆棧實現隊列?

如何使用兩個堆棧實現隊列?

假設我們有兩個堆棧,沒有其他臨時變量。是否可以僅使用兩個堆棧來“構造”隊列數據結構?
查看完整描述

3 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

保留2疊,我們稱它們為inbox和outbox。


入隊:


將新元素推到 inbox

出隊:


如果outbox為空,則通過從中彈出每個元素inbox并將其推入來重新填充它outbox


彈出并從返回頂部元素 outbox


使用此方法,每個元素將在每個堆棧中恰好出現一次-意味著每個元素將被推入兩次并彈出兩次,從而提供了攤銷的固定時間操作。


這是Java的實現:


public class Queue<E>

{


    private Stack<E> inbox = new Stack<E>();

    private Stack<E> outbox = new Stack<E>();


    public void queue(E item) {

        inbox.push(item);

    }


    public E dequeue() {

        if (outbox.isEmpty()) {

            while (!inbox.isEmpty()) {

               outbox.push(inbox.pop());

            }

        }

        return outbox.pop();

    }


}


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 1277 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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