首页 > 其他分享 >232. 用栈实现队列

232. 用栈实现队列

时间:2024-06-07 16:32:48浏览次数:23  
标签:obj 队列 len int 用栈 func MyQueue 232 out

type MyQueue struct {
    in, out []int
}


func Constructor() MyQueue {
    return MyQueue{}
}


func (this *MyQueue) Push(x int)  {
    this.in = append(this.in, x)
}

// 栈1转到栈2
func (this *MyQueue) convent() {
    for len(this.in)>0 {
        this.out = append(this.out, this.in[len(this.in)-1])
        this.in = this.in[:len(this.in)-1]
    }
}

func (this *MyQueue) Pop() int {
    if len(this.out) == 0 { // 栈2为空
        this.convent()
    }
    top := this.out[len(this.out)-1]
    this.out = this.out[:len(this.out)-1]
    return top
}


func (this *MyQueue) Peek() int {
    if len(this.out) == 0 {
        this.convent()
    }
    return this.out[len(this.out)-1]
}


func (this *MyQueue) Empty() bool {
    return len(this.in) == 0 && len(this.out) == 0
}


/**
 * Your MyQueue object will be instantiated and called as such:
 * obj := Constructor();
 * obj.Push(x);
 * param_2 := obj.Pop();
 * param_3 := obj.Peek();
 * param_4 := obj.Empty();
 */

标签:obj,队列,len,int,用栈,func,MyQueue,232,out
From: https://www.cnblogs.com/gdut17code/p/18237444

相关文章

  • 【数据结构】栈和队列-->理解和实现(赋源码)
    Toc欢迎光临我的Blog,喜欢就点歌关注吧♥前面介绍了顺序表、单链表、双向循环链表,基本上已经结束了链表的讲解,今天谈一下栈、队列。可以简单的说是前面学习的一特殊化实现,但是总体是相似的。前言栈是一种特殊的线性表,它只允许在一端进行插入和删除操作。这一端被称为......
  • 【CPP】队列简介及其简化模拟实现
    队列简介及其简化模拟实现目录1.队列简介2.队列简化模拟实现1.队列简介队列是一种满足先进先出的数据结构。具体参考:【数据结构】队列在CPP中,stl也存在库队列,方便使用。库队列参考:queue_stl2.队列简化模拟实现template<classT,classcontainer=deque<T......
  • 基于Linux操作系统的生产消费者队列封装(C++)
    一.先前代码及实现(在该篇中会用到)1.基于Linux操作系统的锁的封装-CSDN博客2.基于linux操作系统的线程封装(可实现任意传递任意类型任意个数的参数)-CSDN博客二.生产消费者模型    在一个多线程的进程中,通常存在如下关系生产者和消费者,其中生产者负责生产资源(产生任务......
  • 银行排队问题之单队列多窗口服务
    1.题目7-5银行排队问题之单队列多窗口服务分数25全屏浏览切换布局作者DS课程组单位浙江大学假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选......
  • 03-3.2.2 队列的顺序存储实现
    ......
  • 多线程、队列、装饰器统计时间
    """一个列表中有100个url地址(每个请求0.5秒),设计一个程序,获取列表的url地址使用5个线程去发送这100个请求,计算出总共请求的时间"""importqueueimporttimefrommultiprocessing.poolimportThreadPooldefdownload(q:queue.Queue):whilenotq.empty():......
  • SpringAMQP的工作队列WorkQueue
    Workqueue,工作队列,可以提高消息处理速度,避免队列消息堆积 模拟WorkQueue,实现一个队列绑定多个消费者基本思路如下:在publisher服务中定义测试方法,每秒产生50条消息,发送到simple.queue在consumer服务中定义两个消息监听者,都监听simple.queue队列一个消息监听者每秒处理50条消......
  • 兴达易控232自由转profinet网关接扫码枪配置及测试案例
    兴达易控232自由口转profinet网关接扫码枪配置及测试案例232自由口转Profinet网关(XD-PNR100/300)的主要功能就是将具有RS232接口的设备(如扫码枪、打印机、传感器等)接入到Profinet网络中,从而实现了传统设备与现代化工业以太网之间的无缝通信和数据交换。本案例是232自由口转Profin......
  • 用Redisson的延迟队列RDelayedQueue处理延迟任务或者定时任务
    什么是RedissonRedisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。什么是RDelayedQueue获取RDelayedQueue:public<V>RDelayedQueue<V>getDelayedQueue(R......
  • 算法训练营第10天|理论基础 232.用栈实现队列 225. 用队列实现栈
    理论基础Java中实现栈有以下两种方式:stack类LinkedList实现(继承了Deque接口)(1)Stack实现Stack底层是使用Vector的,而Vector支持线程同步,所以整体性能相对较低,如果没有多线程的场景,不建议使用Stack。(2)LinkedList实现LinkedList实现了List,Deque(实现了Queue接口)的接口,底层是双......