js实现一个数据结构——栈

栈的概念就不再赘述,无可厚非的先进后出,而JS又是高级语言,数组中的方法十分丰富,已经自带了push pop方法进行入栈出栈的操作。

1.基本实现

javascript 复制代码
class Stack {
    constructor() {
        this.items = [];
    }

    // 入栈
    push(item) {
        this.items.push(item);
    }

    // 出栈
    pop() {
        return this.items.pop();
    }

    // 栈顶元素
    peek() {
        return this.items[this.items.length - 1];
    }

    // 栈的大小
    size() {
        return this.items.length;
    }

    // 清空栈
    clear() {
        this.items = [];
    }

    // 获取栈内元素
    getItem() {
        return this.items;
    }

    // 判断栈是否为空
    isEmpty() {
        return this.items.length === 0;
    }
}

代码很简单,重要的是思想 先进后出先进后出!!
2.函数执行模式------栈

计算机在调用函数的时候,采用的是函数栈的形式(用于递归)

如:

javascript 复制代码
const fun1 = ()=>
{
    return console.log('1')
}
const fun2 = ()=>
{
    fun1()
    return console.log('2')
}
fun2()

那么结果应该是什么呢?答案是 1 2

可以证明 先执行了fun1()后执行了fun2()

那么原理呢?原理是在调用函数时采用的是栈的形式,在调用fun2时 fun2入栈,然后fun1入栈,所以在执行时为fun1先出栈,fun2后出栈

相关推荐
顾安r21 分钟前
11.22 脚本打包APP 排错指南
linux·服务器·开发语言·前端·flask
风筝在晴天搁浅23 分钟前
代码随想录 509.斐波那契数
数据结构·算法
万邦科技Lafite27 分钟前
1688图片搜索商品API接口(item_search_img)使用指南
java·前端·数据库·开放api·电商开放平台
落落落sss28 分钟前
java实现排序
java·数据结构·算法
czhc114007566332 分钟前
c# 1121 构造方法
java·javascript·c#
fei_sun1 小时前
【数据结构】2018年真题
数据结构
yinuo1 小时前
网页也懂黑夜与白天:系统主题自动切换
前端
SundayBear2 小时前
C语言复杂类型声明完全解析:从右左原则到工程实践
c语言·开发语言·数据结构·嵌入式
Coding_Doggy2 小时前
链盾shieldchain | 项目管理、DID操作、DID密钥更新消息定时提醒
java·服务器·前端
用户21411832636022 小时前
dify案例分享-国内首发!手把手教你用Dify调用Nano Banana2AI画图
前端