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

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

1.基本实现

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.函数执行模式——栈
计算机在调用函数的时候,采用的是函数栈的形式(用于递归)
如:

const fun1 = ()=>
{
    return console.log('1')
}
const fun2 = ()=>
{
    fun1()
    return console.log('2')
}
fun2()

那么结果应该是什么呢?答案是 1 2
可以证明 先执行了fun1()后执行了fun2()
那么原理呢?原理是在调用函数时采用的是栈的形式,在调用fun2时 fun2入栈,然后fun1入栈,所以在执行时为fun1先出栈,fun2后出栈
在这里插入图片描述

相关推荐

  1. C语言实现基础数据结构——

    2024-06-13 08:34:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 08:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 08:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 08:34:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 08:34:02       20 阅读

热门阅读

  1. 数据结构-二叉树

    2024-06-13 08:34:02       7 阅读
  2. C++ 线程的使用以及线程安全--学习笔记1

    2024-06-13 08:34:02       5 阅读
  3. 深入理解JVM类加载器与双亲委派模型机制

    2024-06-13 08:34:02       6 阅读
  4. Apache 网站服务基础

    2024-06-13 08:34:02       4 阅读
  5. Ubuntu根分区在线扩容

    2024-06-13 08:34:02       9 阅读
  6. 小程序中的模版语法

    2024-06-13 08:34:02       5 阅读
  7. [Linux] Screen的简单使用与中途退出保持运行

    2024-06-13 08:34:02       6 阅读