JavaScript栈怎么调用

本篇内容介绍了“JavaScript栈怎么JavaScript调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家基本功学习一下如何处理这些情况吧!希望大家仔细阅读,javascript全栈教程,能够学有所成!

什么是栈?

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

JavaScript栈怎么调用  javascript 第1张

JavaScript中的栈

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

示例代码行栈如下:

const stack = []

// 入栈
stack.功能push(1)
stack.push(2)
// 出栈执行
const v1 = stack.pop() // 2
const v2 = stack.pop() // 1

栈的应用场景

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

  • 函数调用堆栈

  • 判断字符串括号是否有效

接下来我们依次来看:

函数调用堆栈

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

区别栈吗jsfunction f1() {}
function f2() {
  f1()
}
function f3() {
  f2()
}
f3()

如下图:

JavaScript栈怎么调用  javascript 第2张

执行行栈过程栈吗栈如下理解:

  • 调用函数f3(),将f3压入堆栈;

  • f3()中调用了f2(),将f2压入堆栈;

  • f2()中又调用了f1(),将f1压入堆栈;

  • 只有f1()运行完成才能继续往下理解执行,所以f1()先出栈,以此类推。

有效的括号

有效的括号是力扣栈吗中的一个关于栈的算法教程栈题目,题目大意就是全栈师判断给定字符串中的括号是否栈匹配,匹配返回true,否则返回false

解题思路JavaScript如下:

  • 判断字符串的长度是否为偶数,不为偶数直接返回false,因为括号都是堆成对出现全栈的;

  • 新建一个栈;

  • 遍历字符串,遍历到每一项时如果时左括号,将其压入栈;如果是右括号,与栈顶对比,如果相匹配则出栈,不匹配则返回false

实现基本功代码如下js:

/**
 * @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栈怎么调用”的内容就介绍到这里了,感谢大家的阅读,编程中的栈。如果想了解更多行业相关编程的知识可以关注蜗牛博客网站,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,javascript执行栈,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接