• 剑指Offer-5.用两个栈实现队列(C++/Java)


    题目:

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

    分析:

    栈的特点是先进后出,队列的特点则是先进先出。

    题目要求我们用两个栈来实现一个队列,栈和队列都有入栈(入队)的操作,所以我们可以使用一个栈来模拟入队的操作,另一个栈用来负责出队。

    利用stack1模拟入队操作,stack2模拟出队操作。

    当有元素入队时,就直接压入stack1中,当要出出队时,stack1中元素弹出的顺序和要求出队的顺序是正好相反的,我们可以将stack1的元素依次弹出,再压入stack2中,此时stack2中元素弹出的顺序,正好与要求出队的顺序是一致的。当然每次出队的时候都要判断stack2是否为空,为空的话就将stack1中元素弹出再压入stack2中,再弹出stack2中的栈顶元素,如果不为空,直接弹出栈顶元素即可。

    程序:

    C++

    class Solution
    {
    public:
        void push(int node) {
            stack1.push(node);
        }
    
        int pop() {
            int res;
            if(!stack2.empty()){
                res = stack2.top();
                stack2.pop();
                return res;
            }
            else{
                while(!stack1.empty()){
                    stack2.push(stack1.top());
                    stack1.pop();
                }
                res = stack2.top();
                stack2.pop();
                return res;
            }
        }
    
    private:
        stack<int> stack1;
        stack<int> stack2;
    };

    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);
        }
        
        public int pop() {
            int res;
            if(stack2.empty()){
                while(!stack1.empty()){
                    stack2.push(stack1.peek());
                    stack1.pop();
                }
            }
            res = stack2.peek();
            stack2.pop();
            return res;
        }
    }
  • 相关阅读:
    Java集合中List,Set以及Map等集合体系详解
    Rabbit-MQ-3 队列的属性和消息的属性
    RabbitMQ-1 基本概念和实现简单生产消费者
    ActiveMQ-3
    日期时间类
    字符串反转
    SpringBoot2.0+Shiro+MyBatisPlus权限管理系统
    Servlet+JSP+JDBC学生选课系统
    SpringMVC+Spring+Hibernate个人家庭财务管理系统
    Servlet中FilterConfig的使用
  • 原文地址:https://www.cnblogs.com/silentteller/p/11827215.html
Copyright © 2020-2023  润新知