兩個棧實現佇列&&兩個佇列實現棧
阿新 • • 發佈:2018-12-11
//首先兩個棧實現佇列
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即可,方法有些麻煩,如果哪位道友有更好的方法,歡迎評論,在此謝過。