数据结构之栈

本文介绍了栈的基本概念,遵循后进先出的原则,以及如何在JavaScript中实现栈的push、pop、top、size和clear方法。通过实例演示了栈的使用和操作过程。
摘要由CSDN通过智能技术生成

栈的概念

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

栈的实现

  • push() 入栈方法
  • pop() 出栈方法
  • top() 获取栈顶值
  • size() 获取栈的元素个数
  • clear() 清空栈
class Stack {
  constructor () {
    // 存储栈的数据
    // this.data = []
    this.data = {}
    // 记录栈的数据个数(相当于数组的 length)
    this.count = 0
  }
  // push() 入栈方法
  push (item) {
    // 方式1:数组方法 push 添加
    // this.data.push(item)
    // 方式2:利用数组长度
    // this.data[this.data.length] = item
    // 方式3:计数方式
    this.data[this.count] = item
    // 入栈后,count 自增
    this.count ++
  }
  // pop() 出栈方法
  pop () {
    // 出栈的前提是栈中存在元素,应先行检测
    if (this.isEmpty()) {
      console.log('栈为空!')
      return
    }
    // 移除栈顶数据
    // 方式1:数组方法 pop 移除
    // return this.data.pop()
    // 方式2:计数方式
    const temp = this.data[this.count - 1]
    delete this.data[--this.count]
    return temp
  }
  // isEmpty() 检测栈是否为空
  isEmpty () {
    return this.count === 0
  }
  // top() 用于获取栈顶值
  top () {
    if (this.isEmpty()) {
      console.log('栈为空!')
      return
    }
    return this.data[this.count - 1]
  }
  // size() 获取元素个数
  size () {
    return this.count
  }
  // clear() 清空栈
  clear () {
    this.data = []
    this.count = 0
  }
}


const s = new Stack()
s.push('a')
s.push('b')
s.push('c')
console.log(s)
// Stack {data: {…}, count: 3}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘子味的冰淇淋~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值