1. 程式人生 > >跟我一起學算法系列7---用兩個棧實現佇列

跟我一起學算法系列7---用兩個棧實現佇列

1.題目描述

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。

2.演算法分析

首先我們需要弄清楚兩個概念,棧是先進後出,佇列是先進先出。概率有了,那麼仔細一分析發現棧和佇列剛好相反,那麼我們就可以在入棧的時候,我們將它全放進棧1中,當需要出棧的時候,我們將棧1的資料出棧,並放到棧2中,然後再將棧2依次出棧。

因此,入棧的時候,只需要使用pop方式入棧到棧1。出棧的時候,我們isEmpty方法將棧1的資料push到棧2,然後將棧2的資料pop即可。

3.程式碼例項

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的資料壓入棧2
            stack2.push(stack1.pop()); 
        } 
     } 
  
    //棧2出棧
    return stack2.pop().intValue(); 
}

}