一文了解JavaScript栈

本篇文章给大家带来了关于javascript的相关知识,主要介绍了一文让你快速了解javascript栈,栈全称为堆栈,是一种先进后出的的数据结构,栈中只有两种基本操作,也就是插入和删除,也就是入栈和出栈操作,栈只有一端可以进行入栈和出栈操作,希望对大家有帮助。

一文了解JavaScript栈

【相关推荐:javascript视频教程、web前端】

什么是栈?

栈全称为堆栈,是一种先进后出的的数据结构,栈中只有两种基本操作,也就是插入删除,也就是入栈和出栈操作栈只有一端可以进行入栈和出栈操作,我们将其称为栈顶,另一端称其为栈底;如下图展示了栈这个数据结构:

一文了解JavaScript栈

JavaScript中的栈

JavaScript并没有栈这个数据类型,但是可以通过数组进行模拟,而且数组中提供的push()pop()选项,正好实现先入后出的的操作,

立即学习“Java免费学习笔记(深入)”;

示例代码如下:

const stack = []// 入栈stack.push(1)stack.push(2)// 出栈const v1 = stack.pop() // 2const v2 = stack.pop() // 1

栈的应用场景

栈是算法和程序中最常用的辅助结构,其的应用十分广泛,凡是需要先进后出场景都有栈的身影,比如:

函数调用堆栈判断字符串括号是否有效

接下来我们依次来看:

知了zKnown 知了zKnown

知了zKnown:致力于信息降噪 / 阅读提效的个人知识助手。

知了zKnown 65 查看详情 知了zKnown

函数调用堆栈

JavaScript中的函数调用堆栈就是一个应用栈的一个典型例子,比如下面这段代码:

function f1() {}function f2() {  f1()}function f3() {  f2()}f3()

如下图:

一文了解JavaScript栈

执行过程如下:

调用函数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};

肯有还有更优的写法,这里直接使用的暴力解法。

【相关推荐:javascript视频教程、web前端】

以上就是一文了解JavaScript栈的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/548638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
苹果手机怎么通话录音_苹果手机通话录音实现方法汇总
上一篇 2025年11月9日 19:02:26
光遇3.14大蜡烛在哪里-光遇3月14日大蜡烛位置攻略
下一篇 2025年11月9日 19:02:31

相关推荐

发表回复

登录后才能评论
关注微信