两个栈 实现一个队列

news/2024/7/5 4:48:12

请用两个栈,实现一个队列

队列:

 概念:先进先出

 api : add delete length

 队列是逻辑结构,抽象模型

简单的,可以用数组、链表实现

复杂的队列服务,需要单独设计

// 思路 

1 定义一个原型对象  里面包涵  add    delete   length  

2.  出列的时候要: 先进先出   

/**

 * 两个栈  一个队列

 */

export class myQueue{

    private stack1:number[] = []

    private stack2:number[] = []

    add(n:number){

        this.stack1.push(1)

    }

    delete():number | null{

        let res

        const stack1 = this.stack1

        const stack2 = this.stack2

        // 将stack1所有元素移动到stack2中

        while(stack1.length){

            const n = stack1.pop()

            if(n != null){

                stack2.push(n)

            }

        }

        res = stack2.pop()

        // 将stack2中的元素返回给stack1

        while(stack2.length){

            const n = stack2.pop()

            if(n != null){

                stack1.push(n)

            }

        }

        return res || null

    }

    get length ():number{

        return this.stack1.length

    }

}

时间复杂度 add O(1)  \delete O(n)

空间复杂度整体是O(n)


http://www.niftyadmin.cn/n/3655726.html

相关文章

脚本引擎初步研究

由于组态软件里要嵌入脚本引擎,以前虽然在IOServer中嵌入了VBScript,但脚本引擎的概念实在是不甚明白,这几天集中突击了脚本引擎的相关知识,收获还不少。看了网上的一篇《实现一个脚本引擎》的文章,一步步做了下来&…

第十七届多国仪器展

上个礼拜有幸和同事一起参加了多国仪器展,用了尽一天的时间,逛了三个展厅。一个是仪器仪表类展厅,一个是系统自动化类展厅,此外还有水处理的展厅。我对仪器仪表不大感兴趣,对那些显示仪、泵、阀等等设备就觉得他们是一…

我们开发的安装程序

做复杂的系统,如果没有安装程序是不可想象的,顺应潮流,我们开发了 自己的安装程序,包括两部分,一是安装程序制作环境,二是实际安装运行程序(约150K,也就是说如果不压缩数据&#xff…

USB口的红外条形码扫描器的另类使用

目前的条形码扫描器有点类似外接键盘(其实从消息传送上它就相当于一个键盘),把输入焦点定位到可输入的控件上,一扫描相应的条形码信息就输入到文本框中去了,但是如果没有输入焦点,或另一个不相干的程序获得…

适应安装程序用的TreeView控件

对axTree做了大量的修改,一是修改Bug,二是添加新功能1、增加了必选项功能2、支持1616的图标位图3、修改连接线的Bug,增加上虚线补齐功能4、支持API 滚动条,调整滚动条的功能为整体滚动

微软核心模块shell32.dll的应用

没有想到shell32.dll还隐藏着很多实用的功能函数,比如打开文件夹,查找电脑,最小化所有窗体等等,这个shell32.dll既是一个标准的COM,还是一个可以作为普通的DLL进行函数引用。****************************************…

如何在VS2005中自动添加事件处理函数?

用惯了VB6,VC6,一时不知道如何在VS2005添加事件了,看了看参考书和上网查了些资料,都没有查到所需要的,除了在界面双击相应控件自动添加简单的消息外,一时只能手动添加消息。其实,一试才知道&…

用API实现串口异步读写

VB的MSCOMM控件虽然很好用,但是在没有装VB的机器上用该控件总觉得有些累赘,网上的VB API代码大部分都基于是同步方式,处理复杂的通信模式不是太理想,所以用了一些时间,把VC项目中的异步串口读写代码翻译为VB格式。在VB…