算法题---用两个栈来实现一个队列,完成队列的Push和Pop操作

用两个栈实现队列

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

队列是先进先出的,而栈是先进后出。
用两个栈实现队列,首先将数据用push()存入第一个栈stack1中,在将stack1的元素一个一个用pop()拿出来,按顺序存入第二个栈stack2中。
假设我们向模拟的队列插入数 a,b,c ,首先将数据插入 stack1,此时的栈情况为:
栈 stack1:{a,b,c}
栈 stack2:{}
将栈stack1的数据拿出来,顺序是{c,b,a}
将拿出来的再按顺序存入栈 stack2中,数据顺序就是{c,b,a}
接下来直接将stack2中的数据pop出来,顺序是{a,b,c}。

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);
    }
    
    public int pop() {
        if(stack2.size() <= 0 ){
            while(stack1.size()!=0){
                stack2.push(stack1.pop());
            }
        }
       return stack2.pop();
    }
}
发布了59 篇原创文章 · 获赞 12 · 访问量 2259

猜你喜欢

转载自blog.csdn.net/qq_41219586/article/details/104080122