• 面试题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>



  • 相关阅读:
    sed命令
    python常用库
    python标准库
    从 Python 打包到 CLI 工具
    pip
    python包自我理解
    docker常用命令
    chattr命令
    xmss
    live2d-widget.js
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5396671.html
Copyright © 2020-2023  润新知