Javascript之“栈“

简介: 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, "")
相关文章
|
2月前
|
JavaScript
数据结构(用 JS 实现栈和队列【三种方式】)
数据结构(用 JS 实现栈和队列【三种方式】)
29 0
|
2月前
|
存储 JavaScript 前端开发
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
19 0
|
4月前
|
存储 前端开发 JavaScript
【Web 前端】JS中的栈和堆是什么?优缺点?
【4月更文挑战第22天】【Web 前端】JS中的栈和堆是什么?优缺点?
|
4月前
|
前端开发 JavaScript 算法
JavaScript 中实现常见数据结构:栈、队列与树
JavaScript 中实现常见数据结构:栈、队列与树
|
4月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
设计模式 JavaScript 前端开发
JavaScript的栈结构
想要代码更优雅,数据结构,设计模式跑不掉,今天走进栈结构!
99 0
JavaScript的栈结构
|
JavaScript 前端开发
数据结构之栈-JavaScript实现栈的功能
数据结构之栈-JavaScript实现栈的功能
33 0
|
存储 算法 JavaScript
JavaScript 中的数据结构与算法:数组、链表、栈、队列等
在JavaScript中,数据结构和算法是非常重要的主题,它们用于有效地组织和处理数据。下面介绍几种常见的数据结构和算法:
|
4月前
|
消息中间件 算法 JavaScript
JavaScript算法和数据结构:描述一下栈和队列的特点及应用场景。
JavaScript算法和数据结构:描述一下栈和队列的特点及应用场景。
59 0
|
4月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
39 0