zoukankan      html  css  js  c++  java
  • 面试题07_用两个栈实现队列——剑指offer系列

    题目描写叙述:

    用两个栈实现一个队列。

    队列的声明例如以下,请实现它的两个函数appendTail 和 deleteHead。分别完毕在队列尾部插入结点和在队列头部删除结点的功能。


    解题思路:

    栈的特性是后进先出,而队列的特性是先进先出。

    因此,用两个栈来模拟队列的功能,在输入数据的时候,一次压入栈A。当要输出数据的时候,则将栈A的数据所有依次弹出,压入栈B 。

    这样。栈B 栈顶就是队列头元素。依次从栈B弹出,即队列的出队操作。

    每次仅仅有当栈B 已经出栈全然了。才进行下一次的B栈入栈。


    代码实现:

    <span style="font-size:18px;">class Solution
    {
    public:
        void push(int node) {
            stack1.push(node);
        }
    
        int pop() {
            if(stack2.size()<= 0)
            {
            	    while(stack1.size()>0)
                    {
                        int num = stack1.top();
                        stack1.pop();
                    	stack2.push(num);
                    }
            }
            
            int ans = stack2.top();
            stack2.pop();
            return ans;
        }
    
    private:
        stack<int> stack1;
        stack<int> stack2;
    };</span>



  • 相关阅读:
    特殊json处理
    css3
    居中定位
    微信支付
    vue 封装cookie,请求,登录拦截,接口拦截
    vue中axios的封装(简易版拦截,get,post
    JS的Event Loop
    JS模块化
    JS的排序算法
    时间复杂度 空间复杂度
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5396671.html
Copyright © 2011-2022 走看看