【leetcode】栈 225. 用队列实现栈

做leetcode记录
题目链接:leetcode 225. 用队列实现栈


一、思路

  • 题目说使用两个队列来实现栈的功能,但是写代码的时候发现可以只使用一个栈。
  • 对于push(int x)的入栈操作,先将要入栈的元素插入队列的尾部,然后依次重复将队列的头部转入尾部,直到入栈的元素成为队列的头部,这样队列中元素的顺序就和栈中元素的顺序相同了;
  • 对于pop()操作,需要移除并返回栈顶元素。首先获取队列的头部并存入temp中,然后移除队头元素,然后返回temp;

二、视频


三、代码

class MyStack {
public:
    queue<int> qu;  //定义一个队列
    MyStack() {

    }
    void push(int x) { //将元素 x 压入栈顶。
        int size = qu.size(); 
        qu.push(x);  //将元素 x 添加到队尾
        for(int i = 0; i < size; i++)  //将元素x前的所有元素放到x后
        {
            int temp = qu.front();
            qu.pop();
            qu.push(temp);
        }
    }
    
    int pop() {  //将队头的元素赋值给temp,然后移除队头,返回temp
        int temp = qu.front();
        qu.pop();
        return temp;
    }
    
    int top() {
        return qu.front();
    }
    
    bool empty() {  //判断队列是否为空
        return qu.empty();
    }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值