剑指Offer——用两个栈实现队列(JS实现)

简介: 剑指Offer——用两个栈实现队列(JS实现)

题目描述

image.png

解题思路

  • 使用两个数组进行初始化
  • 一个数组存储入队操作
  • 一个数组存储出队操作
  • 入队函数将系统输入的值push进A数组
  • 出队函数首先判断出队数组中是否有元素,如果有则将其pop出
  • 如果没有,则将A数组中的元素倒序push进B数组,然后再pop出

实现代码

var CQueue = function() {
    // 模拟入队
    this.stackA = [];
    // 模拟出队
    this.stackB = [];
};
CQueue.prototype.appendTail = function(value) {
    console.log("系统输入的数据:",value);
    this.stackA.push(value);
};
CQueue.prototype.deleteHead = function() {
    // 首先判断出队栈中是否有元素,有则出栈
    if (this.stackB.length) {
        return this.stackB.pop();
    } else {
        // 如果出队栈中没有元素,则判断入队栈中是否有元素
        while (this.stackA.length) {
            // 如果入队栈中有元素,则将入队栈倒序加入到出队栈
            this.stackB.push(this.stackA.pop());
        }
        if (this.stackB.length === 0) {
            return -1;
        } else {
            return this.stackB.pop();
        }
    }
};
相关文章
|
4月前
|
JavaScript 前端开发
js事件队列
js事件队列
144 55
|
3月前
|
JavaScript 前端开发 API
详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务
该文章详细讲解了队列数据结构在前端开发中的应用,并深入探讨了JavaScript的事件循环机制,区分了宏任务和微任务的执行顺序及其对前端性能的影响。
|
2月前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
51 6
|
3月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
3月前
|
JavaScript 前端开发
js事件队列
js事件队列
29 0
|
4月前
|
JavaScript 前端开发
JavaScript——一个简单的队列Demo
JavaScript——一个简单的队列Demo
44 4
|
5月前
|
JavaScript
数据结构(用 JS 实现栈和队列【三种方式】)
数据结构(用 JS 实现栈和队列【三种方式】)
69 0
|
28天前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
25 1
JavaScript中的原型 保姆级文章一文搞懂
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
103 2
|
24天前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
17 0