JS算法基础-栈
栈的概念
栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
通俗来讲,栈就好像一个箱子,我们放东西时从箱子顶部放入(入栈),而最先放入的东西会被压到箱子底(栈底),顺序放入依次从箱子底往上排,最后的东西在箱子口(栈顶),需要拿东西的时候从箱子顶部依次拿(出栈),
如图所示

栈的创建
在原生JS对象中并没有栈这个结构的定义,所以要使用栈就要先创造它。。。
我们先声明一个栈的类,这里使用数组去存储栈内的元素
1 | class Stack { |
栈的数据结构需要一些必要的方法
如下:
1 | // push(el) 添加一个新元素到栈顶(入栈) |
栈的使用
十进制转二进制
1 | function divideBy2(n) { |
本文参考自<学习JavaScript数据结构与算法>,以及百度百科。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wang的博客!
评论