1.基础的栈构造函数
// 栈
function Stack() {
const items = [];
this.push = (ele) => {
items.push(ele);
return items.length;
}
this.pop = () => {
return items.pop();
}
this.peek = () => {
return items[items.length-1];
}
this.isEmpty = () => {
return items.length === 0;
}
this.size = () => {
return items.length;
}
this.clear = () => {
return items = [];
}
this.print = () => {
console.log(items);
}
}
2. 十进制转化二进制
function divideBy2(decNumber) {
let result = '';
const remStack = new Stack(); // 余数堆栈
let rem = 0;
while(decNumber > 0) {
rem = decNumber % 2;
remStack.push(rem);
decNumber = Math.floor(decNumber / 2);
}
while(!remStack.isEmpty()) {
result += remStack.pop();
}
return result+'(2)';
}
divideBy2(10);
3.十进制转化任何其他的进制
function divideByBase(decNumber, base) {
let result = '';
const remStack = new Stack();
let rem = 0;
const dig = '0123456789ABCDEF';
while(decNumber > 0) {
rem = decNumber % base;
remStack.push(rem);
decNumber = Math.floor(decNumber / base);
}
while(!remStack.isEmpty()) {
result += dig[remStack.pop()];
}
return `${result}(${base})`;
}