【剑指offr--C/C++】JZ9 用两个栈实现队列

一、题目

这里是引用

二、思路与代码
栈是先进后出,队列是先进先出,也就是说从push角度来说二者顺序相同,而从pop的角度来说二者顺序正好是相反的,那我们就可以一个栈中push,一个栈中pop。在一个stack1中进行push,然后每当需要pop的时候就将stack1中的元素依次取出放到stack2中,那么正好stack2的顺序就与队列相同了,从stack2取出栈顶元素,取完以后再把元素都放回stack1。

class Solution
{
public:
//push: push到stack1
//pop: 将stack1中的内容全部push到stack2,再从stack2中pop,pop完再把元素都放回去
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        int a;
        while(stack1.size()){
           a=stack1.top();
           stack2.push(a);
           stack1.pop();
        }
        int b=stack2.top();
        stack2.pop();
        while(stack2.size()){
           a=stack2.top();
           stack1.push(a);
           stack2.pop();
        }
        return b;
        
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};

相关推荐

  1. offer面试题7 实现队列

    2024-04-04 17:30:03       35 阅读
  2. 实现队列(c++实现

    2024-04-04 17:30:03       38 阅读
  3. offer】75. 和为S的数字

    2024-04-04 17:30:03       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 17:30:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 17:30:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 17:30:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 17:30:03       18 阅读

热门阅读

  1. 探索Django REST框架构建强大的API

    2024-04-04 17:30:03       18 阅读
  2. redis-乐观锁Watch使用方法

    2024-04-04 17:30:03       19 阅读
  3. python用fastapi快速写一个增删改查的接口

    2024-04-04 17:30:03       15 阅读
  4. Linux内核调试之如何用kdb调试

    2024-04-04 17:30:03       16 阅读
  5. 模板:C++ sort函数

    2024-04-04 17:30:03       18 阅读