1. 程式人生 > >兩個棧實現佇列&&兩個佇列實現棧

兩個棧實現佇列&&兩個佇列實現棧

//首先兩個棧實現佇列

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.add(node);
    }
    
    public int pop() {
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.add(stack1.pop());
            }
        }
        return stack2.pop();
            
    }
}

//兩個佇列實現棧

由於Java沒有純粹的Queue集合實現,所以我說一下思路,和兩個棧實現佇列大同小異。

對於offer方法:

直接對queue1進行offer操作即可。

對於poll方法:

判斷佇列queue1中元素的個數是否為1,如果等於1,則出佇列否則將佇列A中的元素   以此出佇列並放入佇列B,直到佇列A中的元素留下一個,然後佇列A出佇列;再把 佇列B中的元素出佇列以此放入佇列A中。

比如有入隊順序ABCDE到queue1,想拿到E。則需要先將ABCD出隊到queue2,然後讓queue1出隊得到E,再把queue2還原到queue1即可,方法有些麻煩,如果哪位道友有更好的方法,歡迎評論,在此謝過。