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, "")
相关文章
|
7月前
|
JavaScript
数据结构(用 JS 实现栈和队列【三种方式】)
数据结构(用 JS 实现栈和队列【三种方式】)
87 0
|
7月前
|
存储 JavaScript 前端开发
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
41 0
|
9月前
|
前端开发 JavaScript 算法
JavaScript 中实现常见数据结构:栈、队列与树
JavaScript 中实现常见数据结构:栈、队列与树
100 0
|
9月前
|
存储 前端开发 JavaScript
【Web 前端】JS中的栈和堆是什么?优缺点?
【4月更文挑战第22天】【Web 前端】JS中的栈和堆是什么?优缺点?
|
9月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
9月前
|
消息中间件 算法 JavaScript
JavaScript算法和数据结构:描述一下栈和队列的特点及应用场景。
JavaScript算法和数据结构:描述一下栈和队列的特点及应用场景。
87 0
|
9月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
53 0
|
JavaScript 前端开发 算法
在JavaScript中的栈数据结构(Stack )
JavaScript 中可以通过数组实现栈数据结构。栈是一种遵循后进先出(LIFO)原则的数据结构,它只允许在栈顶进行插入和删除操作。
99 0
|
JavaScript 前端开发
数据结构之栈-JavaScript实现栈的功能
数据结构之栈-JavaScript实现栈的功能
44 0
|
设计模式 JavaScript 前端开发
JavaScript的栈结构
想要代码更优雅,数据结构,设计模式跑不掉,今天走进栈结构!
119 0
JavaScript的栈结构

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    45
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55