首页 > 其他分享 >day10 - 栈与队列part01

day10 - 栈与队列part01

时间:2023-08-18 16:44:55浏览次数:49  
标签:obj part01 pop st queue 队列 int day10 push

232. 用栈实现队列

详解

class MyQueue {
public:
    stack<int> st_in;
    stack<int> st_out;
    MyQueue() {

    }
    
    void push(int x) {
        st_in.push(x);
    }
    
    int pop() {
        if(st_out.empty()){
            while(!st_in.empty()){
                st_out.push(st_in.top());
                st_in.pop();
            }
        }
        int result = st_out.top();
        st_out.pop();
        return result;
    }
    
    int peek() {
        int res = this->pop(); // 直接使用已有的pop函数
        st_out.push(res); // 因为pop函数弹出了元素res,所以再添加回去
        return res;
    }
    
    bool empty() {
        return st_in.size() == 0 && st_out.size() == 0;
    }
};

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue* obj = new MyQueue();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->peek();
 * bool param_4 = obj->empty();
 */

 225. 用队列实现栈

 一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

class MyStack {
public:
    //一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。
    queue<int> queue_1;
    MyStack() {

    }
    
    void push(int x) {
        queue_1.push(x);
    }
    
    int pop() {
        int size = queue_1.size();
        size--;//队尾留着变队首
        while(size-- > 0){
            queue_1.push(queue_1.front());
            queue_1.pop();
        }
        int result = queue_1.front();
        queue_1.pop();
        return result;
    }
    
    int top() {
        return queue_1.back();
    }
    
    bool empty() {
        return queue_1.empty();
    }
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */

 

标签:obj,part01,pop,st,queue,队列,int,day10,push
From: https://www.cnblogs.com/zqh2023/p/17640869.html

相关文章

  • 关于云原生开源开发者沙龙「微服务X消息队列专场」的延期通知
    作者:微服务X消息队列各位报名参会的同学,大家好:非常感谢大家对本期云原生开源开发者沙龙「微服务X消息队列专场」的关注与支持。因故原定于8月12日(周六)举办的沙龙延期举行。具体时间和举办地点如下:阿里云云原生开源开发者沙龙微服务X消息队列专场深圳站,推迟于8月27日(......
  • Redis 过期监听 + 加阻塞队列
    https://redis.io/docs/manual/keyspace-notifications/ 简单一句话就是要订阅key失效事件 应用场景:在线客服中开启会话后,如果客户一段时间未回复,则结束会话。为了保证会话结束的时效性,通过redis订阅key失效事件处理        配置notify-keyspace-eventsE......
  • 栈与队列
    栈与队列前言 栈与队列作为线性表结构的代表,在计算机领域应用广泛。我们耳熟能详的系统栈,进程处理等计算机操作系统底层实现原理都是间接或者直接使用了相关数据结构或其思想,下面让我们来介绍这两种数据结构。栈结构定义  栈(stack)是限定仅在表尾进行插入或者删除的线性......
  • 队列的实现方式(先进先出 FIFO)--环形队列
    博客地址:https://www.cnblogs.com/zylyehuo/#-*-coding:utf-8-*-classQueue:def__init__(self,size=100):self.queue=[0for_inrange(size)]self.size=sizeself.rear=0#队尾指针self.front=0#队首指针......
  • 队列的内置模块(deque)--双向队列
    博客地址:https://www.cnblogs.com/zylyehuo/#-*-coding:utf-8-*-fromcollectionsimportdequeq=deque([1,2,3,4,5],5)q.append(6)#队尾进队print(q.popleft())#队首出队#用于双向队列q.appendleft(1)#队首进队q.pop()#队尾出队......
  • 利用队列的内置模块(deque)模拟 Linux 下的 tail 命令(输出文件中最后几行的内容)
    博客地址:https://www.cnblogs.com/zylyehuo/#-*-coding:utf-8-*-fromcollectionsimportdequedeftail(n):#n:指定输出文件中最后几行withopen('test.txt','r')asf:q=deque(f,n)returnqforlineintail(5):print......
  • 栈和队列
    栈和队列1,栈(stack)栈是限定仅在表尾进行插入或者删除操作的线性表栈 :线性表->一对一的关系-》数组链表栈是有限制的线性表(阉割版的线性表)栈更重要的是一种思想先进后出,后进先出 在程序设计或算法中,会经常用到这种思想“撸串”“死胡同堵车”“压子弹” 栈顶(top):进行插入或......
  • day08-字符串part01
    344. 反转字符串详解classSolution{public:voidreverseString(vector<char>&s){intleft=0;intright=s.size()-1;while(left<=right){//chartmp=s[left];//s[left]=s[right];......
  • 20天 hot 100 速通计划-day10
    二叉树114.二叉树展开为链表给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。示例1:输入:root=[1,2,5,3,4,null......
  • RabbitMq的死信队列
    参考博客:https://blog.csdn.net/weixin_59074080/article/details/130673121https://blog.csdn.net/m0_46979453/article/details/127229005https://zhuanlan.zhihu.com/p/582787597?utm_id=0什么是死信队列正常情况下,一条消息自生产者发布到broke,然后转发到队列中,最后被订阅......