2022-12-15 17:53:16
浏览数 (1)
实现思路
栈的核心思想为后进先出(LIFO)
实现一个栈需要具备以下功能
- 压栈:添加一个元素到栈顶
- 出栈:移除栈顶的元素并返回
- 获取栈顶元素并返回
- 判断栈是否为空
- 输出栈内的数据
- 清空栈
- 获取栈的大小
实现代码
代码语言:javascript
复制/**
* 数组实现栈结构
*/
function Stack() {
//数组模拟栈
this.items = []
//压栈
Stack.prototype.push = function(elem) {
this.items.push(elem)
}
//出栈
Stack.prototype.pop = function() {
return this.items.pop()
}
//获取栈顶元素
Stack.prototype.peek = function() {
return this.items[this.items.length - 1]
}
//判断栈是否为空
Stack.prototype.isEmpty = function() {
return this.items.length === 0
}
//输出栈内数据
Stack.prototype.toString = function() {
return this.items.toString()
}
//清空栈
Stack.prototype.clear = function() {
this.items = []
}
//获取栈的大小
Stack.prototype.size = function() {
return this.items.length
}
}
十进制转二进制
代码语言:javascript
复制/**
* 将十进制转成二进制
* @param decNumber 十进制
* @return binString 二进制
*/
function dec2bin(decNumber) {
//实例化栈结构
let stack = new Stack()
/**
* 十进制除2取余 将余数压入栈顶
* 十进制除2的商 赋值给十进制进行下一次运算
*/
while(decNumber > 0) {
stack.push(decNumber % 2)
decNumber = Math.floor(decNumber / 2)
}
//取出栈顶元素拼接字符串 直到栈为空
let binString = ''
while(!stack.isEmpty()) {
binString = stack.pop()
}
return binString
}