用两个栈实现一个队列

题目:

  • 用两个栈,实现一个队列
  • 包括功能:添加队列、删除元素、队列长度  

思路:

  • 什么是队列
    • 队列是先进先出。
    • 简单的可以用数组、链表实现
    • 复杂的队列服务,需要单独设计   
  • 栈我们用数组来实现
  • 队列的添加 add
    • 往 stack1 中push 元素  
  • 队列删除
    • 将stack1 中的所有元素pop出来,push到stack2中
    • 执行 stack2.pop() 将stack2中顶部元素出栈
    • 最后将stack2中所有元素都pop出来,push到stack1中  

代码实现:

复制代码
/**
 * @description 两个栈实现 一个队列
 * @author ykk
 */

export class MyQueue {
    private stack1: unknown[] = [];
    private stack2: unknown[] =[];
    /**
     * 入队
     */
    add(n:unknown){
        this.stack1.push(n)
    }
    delete(){
        // 将 stack1 所有元素移动到 stack2 中
        while(this.stack1.length){
            this.stack2.push(this.stack1.pop())
        }

        //删除stack2顶部元素,即队列的头部
        const res = this.stack2.pop()

        // 将 stack2 所有元素“还给”stack1
        while(this.stack2.length){
            this.stack1.push(this.stack2.pop())
        }
        // 返回删除的元素
        return res || null
    }
    //队列长度
    get length (): number{
        return this.stack1.length
    }
}
复制代码

测试用例:

posted @   yangkangkang  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示