用兩個(gè)棧實(shí)現(xiàn)隊(duì)列

用兩個(gè)棧來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的Push和Pop操作。 隊(duì)列中的元素為int類(lèi)型

  • 隊(duì)列和棧是受限制的線(xiàn)性表,棧是后進(jìn)先出,隊(duì)列是先進(jìn)后出。
  • 數(shù)據(jù)先進(jìn)棧,然后出棧進(jìn)第二個(gè)棧的順序正好與隊(duì)列一致。但是不能考慮在實(shí)際操作過(guò)程中,進(jìn)隊(duì)與出隊(duì)交替進(jìn)行的情況。
  • 這對(duì)隊(duì)列的Pop()操作提出了要求,要保持隊(duì)列的出隊(duì)順序的一致,必須要求
    • 如果第二個(gè)棧有內(nèi)容,可以直接pop()
    • 如果第二個(gè)棧為空,必須把第一個(gè)棧里面的全部?jī)?nèi)容放到第二個(gè)棧,才能pop()
public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
        if(!stack2.empty()) {
            return stack2.pop();
        } else {
            while(!stack1.empty()) {
                stack2.push(stack1.pop());
            }
            return stack2.pop();
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容