1.題目描述
用兩個(gè)棧來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列暴浦,完成隊(duì)列的Push和Pop操作捷枯。 隊(duì)列中的元素為int類(lèi)型洲尊。
2.算法分析
首先我們需要弄清楚兩個(gè)概念远豺,棧是先進(jìn)后出,隊(duì)列是先進(jìn)先出坞嘀。概率有了躯护,那么仔細(xì)一分析發(fā)現(xiàn)棧和隊(duì)列剛好相反,那么我們就可以在入棧的時(shí)候丽涩,我們將它全放進(jìn)棧1中,當(dāng)需要出棧的時(shí)候,我們將棧1的數(shù)據(jù)出棧棺滞,并放到棧2中,然后再將棧2依次出棧矢渊。
因此继准,入棧的時(shí)候,只需要使用pop方式入棧到棧1矮男。出棧的時(shí)候移必,我們isEmpty方法將棧1的數(shù)據(jù)push到棧2,然后將棧2的數(shù)據(jù)pop即可毡鉴。
3.代碼實(shí)例
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.push(new Integer(node));
}
public int pop() {
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
//將棧1的數(shù)據(jù)壓入棧2
stack2.push(stack1.pop());
}
}
//棧2出棧
return stack2.pop().intValue();
}
}