# 栈
栈(英语:stack)又称为堆栈或堆叠,是一种只能在一端进行插入和删除操作的特殊线性表。
它按照后进先出(LIFO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。
# 栈的操作
push(element):添加新元素到栈顶位置pop():移除栈顶的元素,同时返回被移除的元素peek():返回栈顶的元素,不对栈做任何修改isEmpty():如果栈里没有任何元素就返回true,否则返回falseclear():移除栈里的所有元素size():返回栈里的元素个数print():打印栈内元素
# 栈的实现
class Stack {
constructor() {
this._list = []
}
push(...items) {
this._list.push(...items)
}
pop() {
return this._list.pop()
}
peek() {
return this._list[this._list.length - 1]
}
size() {
return this._list.length
}
isEmpty() {
return this._list.length === 0
}
clear() {
this._list.length = 0
}
toString() {
this._list.toString()
}
print() {
console.log(this.toString())
}
}
# 栈的使用
利用栈对十进制数字进行任意进制转换:
/**
* 利用栈对十进制数字进行任意进制转换
* @param {number} num 被转换的数
* @param {number} base 基数
*/
function _parseInt(num = 0, base = 10) {
const stack = new Stack()
const digits = '0123456789ABCDEF'
let ret = ''
while (num > 0) {
stack.push(Math.floor(num % base))
num = Math.floor(num / base)
}
while (!stack.isEmpty()) {
ret += digits[stack.pop()]
}
return +ret || 0
}
_parseInt(100, 2) // 1100100