Javascript之“栈“

栈是一种后进先出的数据结构,不过对于我们Javascript语言来说没有这种结构,不过我们可以通过数组中push和pop操作进行实现

1. 实现栈结构

const stack = []
stack.push(1)
stack.push (2)
const item1 = stack.pop()
const item2 = stack.pop() 

2. 应用场景

  • 十进制转二进制

    对于十进制转二进制,我们利用栈通过将十进制的数除以2取余的数先存push进来,利用后进先出将存入的数pop出去就是二进制数值

  • 有效的括号

    可以根据左括号push,右括号pop的方法,最终的数组为空代表为有效括号

  • 函数调用堆栈

    最后调用的函数先执行完
    JS解析器使用栈来控制函数的调用顺序

    const func1 = () => {
    func2()
    }
    const func2 = () => {
    func3()
    }
    const func3 = () => {}
    func1()
    // 先执行func1函数,再执行func2函数,再执行func3函数
    //先执行完func3函数,再执行完func2函数,再执行完func3函数
    // push func1 func2 func3
    // pop func3 func2 func1
    

3. 练习

有效的括号

用ES6实现一个栈,class Stack

class Stack {
  constructor() {
    this.stack = []
    this.top = 0
  }
  push(item) {
    this.stack.push(item)
    this.top ++
  }
  pop() {
    this.top--;
    return this.stack.pop()
  }
  peek() {
    return this.stack[this.top - 1]
  }
  size() {
    return this.top
  }
  clear() {
    this.stack = []
  }

}

请用栈这个数据结构,将100这个十进制数字转为二进制

function toTwo(num) {
  var stack = []
  while (num !== 0) {
    stack.push(num % 2)
    num = parseInt(num / 2)
  }
  return stack.reverse()
}
var res = toTwo(100).toString().replace(/,/g, "")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值