//栈, 一种运算受限的线性表,后进先出(LIFO)
class Stack {
constructor () {
this.items = []
}
// 进栈
enterStack (elem) {
return this.items.push(elem)
}
// 出栈
outStack () {
return this.items.pop()
}
// 查看栈顶元素,仅仅是查看元素,不进行任何操作
peek () {
return this.items[this.items.length - 1]
}
// 栈是否为空
isEmpty () {
return this.items.length <= 0
}
// 清空栈
clear () {
this.items = []
return true
}
// 栈内元素个数
size () {
return this.items.length
}
}
//十进制转换
function decimalConvert (decNum, bin) {
let stack = new Stack()
let remainder = 0
let result = ''
while (decNum > 0) {
remainder = decNum % bin
decNum = parseInt(decNum / bin)
stack.enterStack(binary(remainder))
}
while (!stack.isEmpty()) {
result += stack.outStack()
}
return result
}
let converted = decimalConvert(999, 16)
console.log(converted)
function binary(num){
switch(num) {
case 10: return 'A';
case 11: return 'B';
case 12: return 'C'
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
default: return num;
}
}