JavaScript栈是什么意思,应用场景有什么
Admin 2022-08-08 群英技术资讯 708 次浏览
栈全称为堆栈,是一种先进后出的的数据结构,栈中只有两种基本操作,也就是插入和删除,也就是入栈和出栈操作,栈只有一端可以进行入栈和出栈操作,我们将其称为栈顶,另一端称其为栈底;如下图展示了栈这个数据结构:
JavaScript并没有栈这个数据类型,但是可以通过数组进行模拟,而且数组中提供的push()
和pop()
选项,正好实现先入后出的的操作,
示例代码如下:
const stack = [] // 入栈 stack.push(1) stack.push(2) // 出栈 const v1 = stack.pop() // 2 const v2 = stack.pop() // 1
栈是算法和程序中最常用的辅助结构,其的应用十分广泛,凡是需要先进后出场景都有栈的身影,比如:
接下来我们依次来看:
JavaScript中的函数调用堆栈就是一个应用栈的一个典型例子,比如下面这段代码:
function f1() {} function f2() { f1() } function f3() { f2() } f3()
如下图:
执行过程如下:
f3()
,将f3
压入堆栈;f3()
中调用了f2()
,将f2
压入堆栈;f2()
中又调用了f1()
,将f1
压入堆栈;f1()
运行完成才能继续往下执行,所以f1()
先出栈,以此类推。有效的括号是力扣中的一个关于栈的算法题目,题目大意就是判断给定字符串中的括号是否匹配,匹配返回true
,否则返回false
。
解题思路如下:
false
,因为括号都是成对出现的;false
。实现代码如下:
/** * @param {string} s * @return {boolean} */ var isValid = function(s) { if (s.length % 2 !== 0) return false const stack = [] for(let i = 0; i<s.length; i++) { const c = s[i] // 记录当前项 if (c === '(' || c === '[' || c==='{') { stack.push(c) } else { const t = stack[stack.length - 1] // 获取栈顶元素 if ( (t === '(' && c === ')') || (t === '[' && c === ']') || (t === '{' && c === '}') ) { stack.pop() } else { return false } } } // 如果为0表示全部匹配,有剩余则表示不匹配 return stack.length === 0 };
肯有还有更优的写法,这里直接使用的暴力解法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
node.js怎样实现断点续传?首先,断点续传怎样理解呢?一般,如果是一些只有几M的图片或者文件,我们将它们上传的到服务器是上是很快的,但是如果是几百M或者几G的文件,那么上传到服务器的时间就会更久,如果这期间文件有断网或者网络差要重新下载情况,那么得多人抓狂呀!而使用切片+断点续传就能够很好应对这样的情况。那么具体怎样做呢?下面跟随小编一起来详细了解看看吧。
这篇文章主要介绍了vant中的toast层级改变操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
可避免关闭窗口,程序就关闭,可在后台运行安装forever包,一般用于服务器,调试环境可不安装npminstallforever-g启动方式如图: 查询后台运行哪些程序foreverlist
删除方法:1、用removeClass()或toggleClass()移除指定CSS类,语法“removeClass("类名")”或“toggleClass("类名")”;2、用removeAttr()去除id、class或style属性。
JS的原型对象是什么?很多新手对于原型对象可能不是很了解,下面小编就给大家介绍一下什么是原型,与原型有关的属性和方法有哪些,以及怎样创建原型对象,感兴趣的朋友就接着往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008