算法与数据结构之栈

58 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 ​

 栈的概念

栈是数据结构中基础数据结构:

  • 一种遵循后进先出原则的有序集合,指的是只能从栈的顶端进行数据到的操作
  • 添加新元素的一端称为栈顶,另一端称为栈底。
  • 操作栈元素时,只能从栈顶操作(添加、移除和取值)

反正就是一种先进后出的数据结构。

图示:

  • 入栈

​编辑

  • 出栈

​编辑

 栈的实现

我们需要实现以下功能:

  • push() 入栈
  • pop() 出栈
  • top() 获取栈顶值
  • size() 获取栈的元素个数
  • clear() 清空栈

首先用创建一个栈类

class Stack {
    constructor() {
        // 记录栈数据
        this.data = []
        // 记录栈的数量
        this.count = 0
    }
}

入栈

push(item) {
    // 方式1 不推荐
    // this.data.push() 性能低
    // 方式2 需要再获取数据长度,性能偏低
    // this.data[this.data.length] = item
    // 方式3 性能最优
    this.data[this.count] = item
    this.count++
}

出栈

pop() {
    // 先判断栈中是否还有数据
    if(this.isEmpty()) {
        console.log('栈为空')
        return
    }
    
    // 移除栈顶值
    // 方式1 
    // return this.data.pop()
    // 方式2
    // const temp = this.data[this.count-1]
    // delate this.data[this.count-1]
    // this.count--
    // 方式3 合并写法
    const temp = this.data[this.count-1]
    delate this.data[--this.count]
}

isEmpty() {
    return this.count === 0
}

获取栈顶值

top() {
    // 判断栈是否为空
    if(this.isEmpty()) {
        return
    }
    
    return this.data[this.count - 1]
}

获取栈的元素个数

size() {
    return this.count
}

清空栈

clear() {
    this.count = 0;
    this.data = []
}

\