天天看點

用兩個棧來實作一個隊列&&用兩個隊列來實作棧

題目:

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

Java實作:

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(node);

    }

//要判斷棧2中是否還有元素,有的話從棧2中pop,沒有的話,将棧1中元素全部放進棧2,然後pop棧2 

    public int pop() {

        if(!stack2.empty())

            {

            return stack2.pop();

        }

        while(!stack1.empty())

            {

            stack2.push(stack1.pop());

        }

        return stack2.pop();

    }

}

題目:兩個隊列實作一個棧

思路:

進隊:先判斷如果隊1為空,offer進隊1,else if隊2為空,offer進隊2(兩隊都為空的時候預設進入隊1)

出隊:如果兩個隊都為空,抛出異常或者傳回false,如果隊1為空,将隊2中的元素出隊并進隊1,直到隊2中剩下一個元素,傳回該元素;如果隊2為空,将隊1中的元素出隊并進隊2,直到隊1中剩下一個元素,傳回該元素.