算法与数据结构之栈

本文介绍了栈这种数据结构的基础知识,它遵循后进先出(LIFO)原则。栈的主要操作包括入栈(push)、出栈(pop)、获取栈顶值(top)、获取栈的元素个数(size)和清空栈(clear)。文中详细展示了栈的JavaScript实现,通过不同的方法优化了操作性能。
摘要由CSDN通过智能技术生成

栈的概念

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

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

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

图示:

  • 入栈

 

  • 出栈

 栈的实现

我们需要实现以下功能:

  • 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 = []
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值