JavaScript数据结构——栈

LK32T102 单片机 操作GPIO实现流水灯(1) 前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。... 阅读详情

栈 
栈是一种遵循后入先出(LIFO,全称Last In First Out)的数据结构,是一种运算受限的线性表,其限制是仅允许在表的一端进行操作,这一端被称之为栈顶。

由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问,如果要访问栈底的元素,必须先移除上面的元素。

栈的实现 
在JavaScript中,采用数组座位存储数据的底层数据结构。

定义Stack构造函数

function Stack(){

   this.items = [];

    this.top=0;//栈顶指针,表示栈顶元素

}


栈具有以下方法

  • push() 进栈

  • pop() 退栈

  • size() 栈大小

  • empty() 判断栈是否为空

  • peek() 返回栈顶元素

  • clear() 清空栈

push 
向栈中压入新元素时,元素位于当前栈顶指针所对应的位置,压入后,栈顶指针应指向下一个位置

function push(item){

   this.items[this.top++] = item;

}

pop 
pop与push方法相反,返回栈顶元素,同时top的值减1

function pop(){

   if(this.top===0) return;

   var item = this.items[this.top-1]

   this.items.length = --this.top;

   return item;

}

size 
size方法返回栈内的元素个数

function size(){

   return this.top;

}

empty 
检查栈是否为空,为空则返回true,否则返回false

function empty(){

   return this.top === 0;

}

peek 
返回栈顶元素

function peek(){

   return this.items[this.top-1];

}

clear 
清空栈内所有元素

function clear(){

   this.items = [];

   this.top = 0;

}

给栈添加方法 
利用原型将以上方法添加给Stack构造函数

Stack.prototype = {

   constructor:Stack,

   push:push,

   pop:pop,

   size:size,

   empty:empty,

   peek:peek,

   clear:clear,

}

栈的实际应用 
下面是一个递归函数,用来计算数字的阶乘

function factorial(n) {

   if (n === 0) {

       return 1;

   } else {

       return n * factorial(n - 1);

   }

}

使用该函数计算5的阶乘

factorial(5) // 120

如果使用栈来模拟计算5!的过程,将5到1依次压入栈,然后再将数字依次弹出连乘,即可得到计算结果

function factorial2(n){

   var s = new Stack(),

       result = 1;

   while(n>1){

       s.push(n--)

   }

   while(s.size()>0){

       result*= s.pop()

   }

   return result;

}

使用该函数计算5的阶乘

factorial(5) // 120


SerDes学习笔记:DFE均衡架构示例(USB3.1、PCIe3.0\4.0) 本文探讨了DFE均衡器架构在不同数据接口中的应用特性。研究表明,抽头数量随数据速率提升而增加,1-16抽头架构较为常见。通过PCIeGen3/4实例分析,对比了单抽头、双抽头和15抽头DFE的性能差异,证明多抽头结构能通过精细调节有效提升噪声容限和降低误码率。文章详细阐述了DFE工作原理,包括其通过反馈信号对输入信号的补偿机制,以及不同抽头对消除码间干扰的作用。实验采用8Gbps速率(125ps/UI)进行波形仿真,直观展示了均衡处理前后的信号变化,为理解信道均衡技术提供了重要参考。 阅读详情

相关推荐

Mplus实战:三变量随机截距交叉滞后模型(RI-CLPM)语法详解与扩展

本文详细解析了Mplus中三变量随机截距交叉滞后模型(RI-CLPM)的构建原理与语法实现。通过将变量分解为稳定的个体间差异与动态的个体内波动,模型能更纯净地揭示多变量间的纵向交互影响。文章以工作压力、睡眠质量与工作满意度为例,提供了完整的语法模板、关键参数设置(如NOCOV命令、残差相关)及结果解读指南,帮助研究者避开常见误区,稳健分析复杂动态关系。

wdx0123456的博客 930

JavaScript基础(一)

一名合格前端工程师自检清单答案整理,欢迎大家批评指正

weixin_39852879的博客 712

Windows下Colmap编译安装全攻略:从Boost到CUDA的避坑指南

本文详细介绍了在Windows系统下编译安装Colmap三维重建工具的完整流程与实战经验。针对Boost库版本兼容性、CUDA与Visual Studio的版本匹配等常见难题提供了具体的避坑指南和解决方案,帮助开发者高效完成从环境配置到最终部署的全过程。

weixin_28235513的博客 199

一名【合格】前端工程师的自检清单(持续更新)

基本数据类型的变量(如数字、字符串等)通常直接存储在栈中,而对象类型的变量(如数组、对象等)则存储在堆中,而变量名则存储在栈中,并指向相应的内存地址。装箱操作指的是将基本类型的值转换为对应的内置对象,拆箱操作则是将内置对象转换为基本类型的值。引用类型的特点是它们的值在内存中不是独立存在的,而是存储在内存中的对象中,变量保存的是对象的地址,因此它们之间的比较是按引用比较的。例如,使用字符串对象的。值类型的特点是它们的值在内存中占据独立的空间,每个变量在内存中都有自己的副本,因此它们之间的比较是按值比较的。

weixin_46164856的博客 1137

BACnet/IP BBMD跨网段通信深度解析与最佳实践

本文介绍了在BACnet/IP网络中通过BBMD实现跨子网设备通信的关键配置方法。重点阐述了广播分发表(BDT)中掩码设置的重要性:使用子网掩码(255.255.255.0)会导致路由器拦截广播消息,而必须采用主机掩码(255.255.255.255)才能启用单播隧道机制,使BACnet广播消息封装为可路由的单播UDP包。文章详细说明了BDT条目的正确配置格式、BIP广播地址的作用,并提供了验证步骤,强调在跨网段场景中,正确设置掩码是确保设备发现和通信成功的关键因素。

零一架构师的专栏 1537

浅聊开关电源6:大学生电赛(电源类)之LCL并网滤波器设计(PCB设计,STM32F4xx程序与Simulink仿真)

关于LCL并网滤波器设计的一些小分享

xjtuymh的博客 3656

JavaScript对象的底层数据结构是什么

上一篇文章归纳了javascript的数据类型,归根到底数据类型就分为两类,一种是基础类型,一种是引用类型。如果还没有看的同学这里附上超链接《JavaScript规定了几种语言类型》 基础类型 内容:String、Number、Boolean、Undefined、Null、Symbol、BigInt 特点:值不可变,无属性无方法,保存在栈内存中、值比较。 ...

ljay92的博客 1735

Cesium圆形波纹/雷达扩散效果扩展类CircleWaveMaterialProperty

本文是基于原创内容进行部分修改,原文出处:https://blog.youkuaiyun.com/chudage11/article/details/101632482 SuperMapCesium支持该类似扩展类,以下是原生Cesium调用扩展类CircleWaveMaterialProperty说明 1.扩展类CircleWaveMaterialProperty.js import*asCesiumfrom'cesium' varCircleWaveMaterial={ Circl...

一碗老面的博客 3001

js(JavaScript)数据结构之栈(Stack)

栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。栈只能对栈顶进行操作,不关心内部的元素状态。栈通常用于需要后进先出的数据处理场景,栈的特点是只能在栈顶进行添加和删除操作,添加的元素会放在栈顶,删除的元素也会从栈顶位置开始。例如浏览器的历史记录、括号匹配等。

星辰迷上大海的博客 1996

基于FPGA的万兆以太网学习(1)

万兆(10G) 以太网测速视频:SFP+屏蔽笼可以插入千兆或万兆光模块。SFP+信号定义与 SFP 一致。

baidu_34971492的博客 2250

OpenClaw插件开发指南:扩展AI智能体的无限可能

OpenClaw插件开发指南介绍了如何扩展AI智能体的功能。该插件系统支持多种类型(功能、集成、工具、界面、工作流插件),具有模块化、低耦合等优势。开发环境需要安装SDK和工具包,通过plugin.json配置插件信息,主文件实现核心功能。API提供智能体管理、任务执行等接口,示例演示了文本处理插件的创建流程。开发者可基于此框架灵活扩展OpenClaw的能力。

一键难忘的博客 562

【数据结构与算法】JavaScript实现栈结构(Stack)

数据结构就是在计算机中,存储和组织数据的方式。例如:图书管理,怎样摆放图书才能既能放很多书,也方便取?操作一:新书怎么插入?操作二:怎么找到某本指定的书?常见的数据结构:数组(Aarray)栈(Stack)链表图(Graph)散列表(Hash)队列(Queue)树(Tree)堆(Heap)注意:数据结构与算法与语言无关,常见的编程语言都有直接或间接的使用上述常见的数据结构。算法(Algorithm)的定义一个有限指令集,每条指令的描述不依赖于语言;

一个前端开发者 348

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)一、设计目标二、电路展示三、存在的问题四、代码五、需要注意的问题 一、设计目标       前一阵子偶然接触到点灯科技平台,产生了制作一块ESP8266电路板,拥有以下功能: 使用CH340对ESP8266进行程序下载 使用DHT11进行温湿度数据读取 使用点灯科技平台接入物联网,可通过手机APP获得室内温湿度 接入小爱同学,通过语音获取室内温湿度信息 Mico US

weixin_43278295的博客 8853

js数据结构与算法:栈_javascript栈数据结构解决问题

向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。:(stack)又名堆栈,它是一种运算受限的线性表。首先我们借用数组的方法来实现,所以我们需要创建。:限定仅在表尾进行插入和删除操作的线性表,:限定仅在表头进行插入和删除操作的线性表。那么在实现这个类,我们用对象来模拟栈。构建一个类,用数组来模拟,面向过程就是将解决问题的。数组的方法来实现栈的模拟。就是将构建问题的事物,

2501_90424955的博客 461

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaScript数据结构之栈

JavaScript 数据结构之栈思维导图: JavaScript 数据结构之栈源码 <html> <body> <script> console.log('javaScript数据结构之栈'); function Stack(){ this.items = []; } Stack.prototype ={

zhouzhiwengang的专栏 240

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

js数据结构之栈

数据结构是向相互之间存在一种或者多种特定关系的数据组成的集合, 采用合适的数据结构能给开发者提高开发和储存效率.比如我们在学习Es6中的我们新接触的到的(Set, map), 在合适的时候使用它们能帮助我们更快的的解决问题.我们每个在编码是都会用到数据结构,数据最简单的内存数据结构,下面是常用的数据结构栈 (Stack)队列 (Queue)链表(Linked List)集合(assemble)字典(Dict)哈希表(HashTable)树 (Tree)图(Map)

caihuayuan4的博客 1038

使用js实现数据结构栈

使用js实现数据结构栈 说明: 栈是是一种遵从后进先出原则的有序集合。新添加的元素都保存在栈的一端,称作栈顶,另一端叫做栈底。在栈中,新元素都靠近栈顶,旧元素都靠近栈底。 功能: push:往栈里追加元素 pop:删除栈里的元素,同时返回该元素 peek:获取栈顶的元素,并返回 clear:清空栈里的所有元素 isEmpty: 判断栈是否为空,返回true or false size:判断栈里元素...

aManWithDreams的博客 491

JavaScript数据结构之栈的认识

栈数据结构 栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 接下来,我们创建一个类来表示栈。新建一个 stack-array.js 文件 const Stack { constructor() { this.items = []; } // 下面是为栈声明一些方法 push(element) { // 添加新元素到栈顶 this.items.push

longgege001的博客 226

JavaScript数据结构 —— 栈Stack

学习JAVASCRIPT数据结构与算法——栈Stack

weixin_48920282的博客 1023

javaScript数据结构——栈

数组可以在任意位置上删除或添加元素,然而有时我们需要一种在添加和删除元素时有更多控制的数据结构,有两种数据结构类似于数组,但在添加和删除元素时更为可控,他们就是栈和队列。 栈: 栈是一种遵从后进先出原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端称作栈底。 <!DOCTYPE html> <html> <head> <m...

yuefujuan_1992的博客 256

[JavaScript数据结构] 栈的实现及应用

开始 栈是一种特殊的线性表,仅能够在栈顶进行操作,有着**先进后出(后进先出)**的特性。下面这张图为栈的工作特点: 从数据存储的角度看,用JavaScript实现栈有两种方式,一种是以数组做基础,一种是以链表做基础,本节中,我们使用数组实现栈。链表会作为单独的数据结果进行介绍。 我们先定义一个简单的Stack类 function Stack(){ var items = []; // 用数组存储数据 } 数据会存储在 items数组中,现在,这个类没有任何的方法。 栈的方法 栈的方法有以下几种 p

whitsats的博客 385

JavaScript数据结构(栈)

JavaScript数据结构 ——栈JavaScript数据结构(一) 栈什么是栈常见栈操作JavaScript(数组)实现栈结构 JavaScript数据结构(一) 栈 什么是栈 栈是一种受限的线性结构,只允许在一端(栈顶)进行删除(出栈)和添加(入栈)操作。 栈的特点:先进后出,后进先出 练习:有 6 个元素 6,5,4,3,2,1 按顺序进栈,问下列哪一个不是合法的出栈顺序。 A:5 4 3 6 1 2 (√) B:4 5 3 2 1 6 (√) C:3 4 6 5 2 1 (×) D:2 3 4

nanxing的博客 871

【数据结构】JavaScript栈实现

栈是一种常见的数据结构,常用于app页面堆栈、括号匹配校验、中缀表达式转换、图的深度优先遍历等场景,本文参考java jdk源码,在JavaScript中实现这种数据结构。

流星雨的博客 2044

JS数据结构(2)——栈

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

echomsy的博客 263

[精华]javascript-数据结构-数组模拟栈-教程

javascript数组模拟栈-数据结构 栈数据结构特点-后进先出 //javascript数组模拟栈结构 class Stack { constructor() { this.items = []; } push(element) { //栈顶添加元素 this.items.push(element); } pop() { //删除栈的元素 this.items.pop(); } peek() { //获取栈顶的元素

qq_34070719的博客 236

02【JS数据结构与算法】栈

写在前面 上一节我们介绍了JS中的第一个数据结构——数组,包括它里面的一些自带的方法、还有我们自己手动实现的方法、还有使用场景等。JS中的数组跟其他语言不太一样,它是动态增长的,所以它给我们编程带来了极大的灵活性。今天我们再来介绍另一种数据结构——栈,它其实可以看作是JS中的一种特殊的数组。 接下来的内容,我们按下图所示给大家介绍: 栈的描述 栈的功能其实跟数组类似,就是用来存储一些数据的,不过它跟数组不同的是:栈是一种后进先出(LIFO)的数据结构。怎么理解呢?就像是现实生活中我们在桌子上摞的

X北辰北的博客 712

javascript数据结构——栈

转自:https://www.cnblogs.com/chengzp/p/stack.html   栈是一种高效的数据结构,数据只能在栈顶添加或删除,所以这样操作很快,也很容易实现。栈的使用遍布程序语言实现的方方面面,从表达式求值到处理函数调用。接下来,用JavaScript实现一个栈的数据结构。 定义栈的操作   栈作为一种特殊的列表,只能从一端来进行访问,就像一摞盘子,放只能放在上面...

Lyj的博客 198
上一篇: CSS3中steps()动画的详解
下一篇: 你真的会用搜索引擎吗?能写出好论文、找到好工作的那种
风或许自媒体
博客等级 码龄12年 76粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值