栈之用两个栈实现队列

1.本题知识点

   栈,队列

2. 题目描述

   用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

3. 思路

   这个思路比较简单,首先明白队列是先进先出,我们用两个栈stack1 stack2模拟即可,stack1负责队列的push,stack2负责队列的pop,stack2中的数据是从stack1中pop得到的.

栈之用两个栈实现队列_第1张图片

   Java版本:
import java.util.Stack;

public class Solution {
    //思路:stack1负责push,stack2负责pop
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop()throws Exception {
        //如果stack2为空,就从stack1中弹出元素加入
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        //stack2依然为空,说明stack1也为空
        if(stack2.isEmpty()){
            throw new Exception("queue is empty!");
        }
        
        return stack2.pop();
    }
}

你可能感兴趣的:(数据结构和算法,用两个栈实现队列)