用JS实现对栈的操作

Javascript实现数据结构中链表、栈、队列、二叉树操作 链表 //定义单向链表的节点类 class Node{ constructor(data){ this.data = data //节点的数据域(数据成员) this.next = null //节点的指针域(指针成员) } } //定义单向链表类 class SingleLinked{ constructor(){ this.size = 0 //用记录链表中的节点个数 this.head = new Node(' 阅读详情

用JS实现对栈的操作

栈的结构:栈底、栈顶(栈是一种后入先出的结构)lifo(last_in_first_out)
栈的操作:入栈、出栈
栈的方法:

push     //栈顶添加元素
pop      // 拿出栈顶元素
peek     // 查看栈顶元素
isEmpty  // 检查栈是否为空
clear    // 移除栈的全部元素
size     //获取栈的长度

下面通过Js模拟对于栈的操作,对栈有一个比较直观的感受
构造一个栈的结构
函数自带两种功能,一种是函数,一种是构造器
函数内部使用 this,则this指向构造的对象,因此在如下结构中若是用this则是定义一种共有方法或变量

var Stack = function(){
    var item = []
// 栈顶添加元素
    this.push = function(element){
        item.push(element)
    } 
// 拿出栈顶元素
    this.pop = function(){
        return item.pop();
    }
// 查看栈顶元素
    this.peek = function(){
        return item[item.length - 1]
    }
// 清空栈元素
    this.clear = function(){
        item = []
    }
// 检查栈是否为空
    this.isEmpty = function(){
        return item.length == 0;
    }

// 获取栈的长度
    this.size = function(){
        return item.length;
    }
}

下面在Chrome调试查看对于栈的操作
新建一个html文件,并引用js代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="zhan.js"></script>
</head>
<body>
</body>
</html>

打开chrome调试,通过查看以下内容,可以发现,已经成功的实现了栈的功能

var s = new Stack()
s.push(1)
s.push(3)
s.push(8)
s.push(9)
s.peek()  // 9
s.pop()   // 9
s.peek()   // 8
s.size()  // 3
s.isEmpty() // false
s.clear()  
s.peek()   // undefined  因为栈内元素被清空,因此返回栈顶元素为undefined

在这里插入图片描述
代码实践,将十进制数转换为2进制数

var change = function(num){
var stack = new Stack()
 while (num > 0) {
            let yushu = num % 2
            stack .push(yushu)
            num = Math.floor(num / 2)
        }
        let string = ''
        while (!stack.is_empty()) {
            string += stack.pop()
        }
        return string;
}
change(1000)   // '1111101000'

队列:先进先出 fifo (first_in_first_out)
向数组第一个位置添加元素:

array.unshift() // 返回最新的数组长度
var array = [1,2,3]
var new_arr = array.unshift(4) 
console.log(new_arr ) // 4
console.log(array) // [4, 1, 2, 3]

删除数组第一个元素

array.shift()  // 返回被删除元素
var array = [1,2,3]
var new_arr = array.shift() 
console.log(new_arr ) // 1
console.log(array)  // [2, 3]
30天入门 SAP BTP 开发系列之一:SAP 开发顾问为什么要学习 SAP BTP 开发?能带来哪些收获? 国内 SAP 开发顾问们的微信朋友圈,最近可能都被 SAP 和阿里这两家巨头宣布合作的重磅消息刷屏了吧。近日,德国软件巨头SAP SE与中国电商巨头阿里巴巴集团宣布建立战略合作伙伴关系。根据协议,阿里巴巴集团将利用 SAP Cloud ERP Private 强化企业基础设施,并采用联合上市策略为全球客户创造卓越价值。阿里巴巴将集成 SAP Business Suite,以简化系统维护与升级流程,并实现 AI 功能与核心业务流程的无缝整合。 阅读详情

相关推荐

视频教程-Ps教程之神奇的Photoshop自动化技术-Photoshop

Ps教程之神奇的Photoshop自动化技术 10年以上IT行业工作经验、三...

weixin_28812857的博客 1475

Vue.js 中的 $router 和 $route

在本文中,我们介绍了 Vue.js 中的 $router 和route,以及它们的区别。route,以及它们的区别。route,以及它们的区别。router 是用于管理路由的对象,包含了许多方法和属性,用于在路由之间进行导航。$route 是用于获取当前路由信息的对象,包含了许多属性和方法,用于描述当前路由的状态。为了更好地了解 $router 和 $route 的使用,我们演示了一个完整的示例代码,包含了路由链接、嵌套路由、路由导航等等。

徐师兄的博客 2842

【医学影像】超声(UltraSound)影像的增强与目标检测

文章目录1 综述1.1 超声发展简史1.2 超声类型2 超声影像的去噪与增强2.1 各向异性扩散去噪模型2.2 色彩恢复的视网膜增强算法SSR和MSR2.3 MSRCR增强算法(基于MSR算法改进版)2.4 参考文献3 超声影像的目标识别3.1 基于跨模态数据迁移进行DL训练3.2 参考文献 1 综述 因工作需要,最近调研了超声(UltraSound)影像的相关知识,包含超声类型、超声影像的去噪和增强,目标检测等,并对相关资料文献进行梳理整合。 本人另外一篇博文主要讲了UltraSound 影像与CT/MR

muyijames的博客 1万+

VueRouter路由模式解析

VueRouter路由模式解析

qq_42880714的博客 2839

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(四)-无人机系统(UAS)命令与控制(C2)通信用例

UTM向5G网络提供无人机系统C2通信所需的信息,例如服务类别、无人机系统服务的流量类型、授权的无人机系统服务所需的QoS以及无人机系统服务的订阅。遵循模型B的网络辅助C2模型,为了确保UAS操作的C2通信的服务可用性和可靠性,特别是当无人机在操作员的视线之外(BLOS)飞行时,为无人机提供支持冗余的C2通信链路。如果需要创建额外的C2通信连接或更改现有数据连接的配置以进行C2通信,则5G网络会根据无人机系统的授权服务信息和C2通信中所需的QoS和优先级,修改或分配一个或多个C2通信流量的QoS流。

u011376987的博客 2053

JS 数据结构:栈

栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。 例: 假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。

weixin_46015333的博客 1345

手把手教你配置SAP PP供应区域(Supply Area):实现线边仓精准发料与物料流优化

本文详细解析了SAP PP供应区域(Supply Area)的配置方法,帮助企业实现线边仓精准发料与物料流优化。通过三级优先级逻辑和四步配置法,系统可自动识别最优组件来源位置,显著提升生产订单处理效率和库存准确率。文章还提供了典型问题解决方案和性能优化技巧,适用于离散制造和重复制造场景。

weixin_29275257的博客 434

JS数据结构(2)——栈

JS数据结构(2)——栈 栈(stack)是一种** LIFO(Last-In-First-Out,后进先出)** 的数据结构。 它是一种受限的线性表,它的限制是仅允许在表的一端进行插入和删除运算,这一端就被称为栈顶,另外一端就是栈底。 向一个栈添加一个新元素叫做进栈、入栈或者压栈,它是把新元素放到栈顶元素的上面,成为新的栈顶元素。 从一个栈中删除元素叫做出栈或者退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 创建栈 function Stack(){ this.items = [];//

echomsy的博客 263

Project 编制进度计划【项目管理】

Project 项目管理编制进度计划详解。

m0_52861684的博客 5088

ComfyUI整合包V8中文版最新版介绍

和普通AI绘图网页不同,它把图像生成的每一个步骤拆分成一个个"节点",用连线把它们串起来,形成工作流。里面包含ComfyUI内核、Python运行环境、常用插件、部分预置模型,还有一个叫"绘世启动器"的图形界面管理工具。网上的对比数据显示,WebUI最低需要4G显存,ComfyUI最低3G显存就能运行。可以在里面管理插件、切换模型路径、设置显存模式、查看日志报错,还有"疑难解答"功能,遇到报错可以先扫描一下看是不是已知问题。原版ComfyUI的界面是英文的,右键菜单、节点名称全是英文。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 5228

js中栈的运用

JavaScript 中栈的运用 在 JavaScript 中,栈(Stack)是一种非常有用的数据结构,它遵循后进先出(Last In First Out,LIFO)的原则。在本文中,我们将深入探讨栈的概念以及在 JavaScript 中的实际运用。 一、栈的概念 栈是一种线性数据结构,它只能在一端进行插入(称为入栈或压栈,push)和删除(称为出栈或弹栈,pop)操作。想象一下一摞盘子,你只...

weixin_28950403的博客 174

【光子AI 2026 企业级 Agent 架构指南】别再把 Skill 当 Tool:Agent Skills × MCP 企业级落地全指南(最新定义澄清 + 场景大全 + 选型决策树+安全工程清单)

摘要: 2026年企业级AI架构迎来两大核心标准——Agent Skills与MCP(Model Context Protocol),分别解决流程标准化与系统集成难题。Agent Skills通过“文件夹化能力包”(SOP+脚本+模板)固化专家流程,确保输出一致性;MCP则以类USB-C的协议统一外部系统接入,降低集成成本。两者差异显著:Skills专注程序性知识(如财报生成),MCP侧重动态连接(如跨平台数据调用)。实际场景中,复杂需求(如智能客服)需组合使用——MCP为骨架提供连接能力,Skills为大

AI天才研究院 2477

一道js编程题:用js实现栈的出栈,入栈等操作

这是4月份快手前端实习笔试的一道编程题,要求是实现: 入栈:NumberStack.push(num) 、出栈:NumberStack.pop() 、找出栈中第n大的数:NumberStack.max(n) //下面是我的版本 function NumberStack() { this.stack = []; //栈的定义 } NumberStack.prototype.push = ...

LeslieYoung的技术博客 3684

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

用JS实现栈操作

栈的定义 栈是一种只能在一端进行插入或删除操作的线性表。其中允许进行插入或删除操作的一端称为栈顶(Top)。表的另一端称为栈底,栈底是固定不变的。栈的插入和删除操作一般称为入栈和出栈。 特点:先进后出(FILO)。 栈的结构 顺序栈 const OK = true; const ERROR = false; const {log} = console; class Stack { constructor() { this.data = []; this.top

sinat_37503265的博客 751

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【面试专题03】Python全栈日记-JavaScript实现图形化栈操作

之前的python课程学习过关于栈结构的内容,回顾一下,然后用JavaScript实现图形化栈结构。   栈具有非常强大的“记忆”功能,它可以保存对你有作用的数据,也可以被叫做保存现场;其次,当调用一个带参函数时候, 被调用的函数的形参,在编译器编译的时候,这些形参都需要一定的空间存放他们,这时计算机就会默认帮你保存到栈中了!     栈的定义       栈的作用,这是一个生活中...

我是一只程序⚪的技术交流平台 442

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaScript通过栈操作实现队列

初始化队列,创建两个空栈 var MyQueue = function() { this.stack1 = []; this.stack2 = []; }; stack1主要存放数据,push()直接将数据放入stack1的末尾 MyQueue.prototype.push = function(x) { this.stack1.push(x); }; pop()弹出队列的第一个数,即stack1最底层的数,此时需要用到栈二。 将stack1的数依次由上到下弹出后放入stack2

qq_44396970的博客 184

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。(js)

1.题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 2.代码 var res=[]; function push(node) { // write code here for(var i=res.length;i>0;i–){ res[i]=res[i-1]; } res[0]=node; return res; } function pop() { // write code here var pro=res[res.length-1]; res.sp

Aspen66的博客 322

js中的数组操作实现类似栈和队列的行为

首先来谈谈栈和队列: 栈:元素后进先出,可以去掉的是最近插入的那一个; 队列:可以去掉的是集合中存在时间最长的那一个,即先进先出。 ECMAScript的shift和unshift ,pop 和 push 方法其实是为了实现类似队列的行为。 push() :在数组的末尾添加一个或多个元素; unshift() : 在数组的前端添加一个或多个元素; shift() : 把数组中的第一个元...

sinat_38327919的博客 478

JavaScript实现栈与队列的操作

目录栈队列 栈 ES5写法 function Stack() { //用数组模拟栈 var stack = []; //入栈 this.push = function (element) { stack.push(element); } //出栈 this.pop = function () { stack.pop(); } //查看栈顶元素 this.peek = function (

m0_52942098的博客 274

用JS实现栈-栈的基础理解和基本操作

数据结构之栈,栈的基础理解和基本操作

GY的博客 459

JavaScript中栈和队列相关操作和实现

栈的介绍栈就是和列表类似的一种数据结构,数据只能在栈顶添加或者删除。栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,成为栈顶。栈具有后进先出的特点,所以任何不在栈顶的元素都无法访问。后进先出(LIFO,last-in-first-out)的数据结构。对栈的操作1.对栈的两种主要操作为将一个元素压入栈和将一个元素弹出栈。 入栈:push(); 出栈:pop(); 2.预览栈顶的元素peek

Hling's Blog 710

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。js代码已通过

文章目录算法题目思路js代码 算法题目 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 假设推入1,2,3,4这几个元素进栈,那么栈顶元素是4,栈底是1 将stack1的所有元素推到stack2中,此时stack2中的栈顶是1,栈底是4。 此时将stack2的1 pop出来,刚好就满足了队列元素的先进先出的特性 最后将stack2的退回到stack1 js代码 var stack1 = [] var stack2 = [] function push(

weixin_43342105的博客 450

用JS实现栈、队列、二叉树遍历等操作

栈的基本运算 后进先出,在一端进行插入和删除的数据结构,表尾端称为栈顶(top),表头端称为栈底(bottom),因为栈限定在表尾进行插入或者删除,所以栈又被称为后进先出的线性表 // 栈的构造函数 function Stack(){ var items = []; // 将元素送入栈,放置于数组的最后一位 this.push = function(element){ items.push(element); } // 弹出栈顶元素 thi

m0_56649557的博客 432

JavaScript用两个栈来实现一个队列,完成队列的Push和Pop操作

var left=[],right=[] function push(node) { left.push(node); } function pop() { var t=[] //如果在left栈push到right栈之前,right栈中有元素,先要将right中元素倒出来放到t中, //把left栈中元素全部倒入空的right栈中后,再把t中的元素倒回r...

止水 896

牛客网-剑指offer[编程题]包含min函数的栈 js详解

这道题js的做法还是蛮简单的 应为js的栈和队列其实都是利用数组建立的 var stack = []; function push(node) { stack.push(node); // write code here } function pop() { if(stack.length){ stack.pop(); } // write...

kotoriyou的博客 163
上一篇: JS中计时器setTimeout以及setInterval的使用以及for循环中延迟打印的坑
下一篇: 解决遍历集合的同时修改集合元素会抛出并发修改异常的问题
programmer_trip
博客等级 码龄7年 3187粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值