JS数据结构与算法之栈

概念及特点

概念

栈也是数据结构的一种,结构与列表类似。是一种运算受限的线性表。

特点

一、只能在栈顶添加或者删除。

二、常见操作是push(入栈)和pop(出栈)

三、此类特点被称为LIFO(last-in-first-out)后进先出(可以理解为洗盘子,最后放进去的最先被洗掉)

代码实现

我们数组中其实是可以直接模拟栈的操作模式,但是为了促进大家理解,此次我们会对栈进行一个封装。

思路解析

  1. 实现一个Stack类
  2. 入栈push实现
  3. 出栈pop实现
  4. 查看栈顶元素 peek实现

代码实现

class Stack {
    value: any[] = [];
    top: number = 0;

    push(el: any) {
        this.value[this.top] = el;
        this.top++;
    }

    pop() {
        const temp = this.value[this.top - 1];
        this.value.length = --this.top;
        return temp;
    }

    peek() {
        return this.value[this.top - 1];
    }
}

const a = new Stack();
a.push(1);
a.push(2);
a.push(3);
console.log(a.peek());
console.log(a.value);
console.log(a.pop());
console.log(a.value);
复制代码

数组类型直接模拟

const arr = [];
arr.push(aa);
arr.pop();
复制代码

刷题深入

leetcode-20.有效的括号 - 简单可入门

猜你喜欢

转载自juejin.im/post/7032661036134039582