数据结构 ---- 栈-----数组形式
// 构建一个栈类
function Stack() {
this.item = [];
//栈的操作
// push : 添加一个新元素到栈顶位置
Stack.prototype.push = function (element) {
this.item.push(element)
}
// pop : 移除栈顶的元素 同时返回被移除的元素
Stack.prototype.pop = function () {
return this.item.pop()
}
// peek : 返回栈顶的元素 不对栈做任何修改
Stack.prototype.peek = function () {
return this.item[this.item.length - 1]
}
// isEmpty : 如果栈里没有任何元素就返回true 否则返回false
Stack.prototype.isEmpty = function () {
return this.item.length === 0
}
// size : 返回栈里的元素个数 这个方法和数组的length类似
Stack.prototype.size = function () {
return this.item.length
}
// toString : 将栈结构的内容以字符型式返回
Stack.prototype.toString = function () {
let string = ''
for (var i = 0; i < this.item.length; i++) {
string += this.item[i] + ''
}
return string
}
}
经典面试题解法:
// 将十进制转换为二进制
// 十进制转二进制 每次整除2 取余数即可 大于 0 停止
function dec2bin(decNumber) {
//创建一个栈对象
let s = new Stack()
// 循环操作
while (decNumber > 0) {
// 将每次整除之后的余数存放入栈中
s.push(decNumber % 2)
// 将每次整除之后得到的数字取出用作于下一次计算
decNumber = Math.floor(decNumber / 2)
}
// 将结果以字符串的形式返回
let string = ''
while (!s.isEmpty()) {
string += s.pop()
}
return string
}