huan_kong
296字小于1分钟
2023-11-21
栈结构只能在栈顶插入或取出数据, 不能在任意位置插入数据
提示
插入数据也称为进栈/压栈/入栈
删除/取出数据也称为出栈/退栈
也就是后进先出(LIFOL: last in first out)
优点: 提供后进先出的存储方式, 添加速度快, 允许重复
缺点: 只能在一头操作数据, 存取其他项很慢
不是一次性压入这6个元素, 可以同时出或者入
压6, 压5, 出5, 压4, 出4, 压3, 出3, 出6, 压2, 压1, 出1, 出2
压6, 压5, 压4, 出4, 出5, 压3, 出3, 压2, 出2, 压1, 出1, 出6
压6, 压5, 压4, 压3, 出3, 出4,
出不来了, 因为需要先出5才能出6
压6, 压5, 压4, 压3, 压2, 出2, 出3, 出4, 压1, 出1, 出5, 出6
class Stack {
#value: any[] = []
push(val: any) {
return this.#value.push(val)
}
pop() {
return this.#value.pop()
}
peek() {
return this.#value[this.#value.length - 1]
}
isEmpty() {
return this.#value.length === 0
}
size() {
return this.#value.length
}
toString() {
return this.#value.toString()
}
}
使用 栈
实现 十进制
转 二进制
function dec2bin(number: number) {
const stack = new Stack()
while (number > 0) {
stack.push(number % 2)
number = Math.floor(number / 2)
}
let bin = ''
while (!stack.isEmpty()) {
bin += stack.pop()
}
return bin
}