1.使用到的Array方法有:push()、pop()
2.栈对象代码:
class Stack {
stack = [];
// 入栈
push(item) {
return this.stack.push(item);
}
// 出栈
pop() {
return this.stack.pop();
}
// 栈顶元素
topStack() {
return this.stack.length > 0 ? this.stack[0] : undefined;
}
// 栈是否为空
isEmpty() {
return this.stack.length === 0;
}
// 清空栈
clear() {
this.stack = [];
}
// 栈大小
size() {
return this.stack.length;
}
}
3.常见用法:
3.1栈实现进制转换:
/**
* 用栈实现进制转换
* @param {number} decNumber - 基数
* @param {number} base - 进制
* @returns {string} - 转换后的字符串
*/
function convert(decNumber, base) {
if (base <= 1) {
console.info("base至少要大于1");
return decNumber;
}
const stack = new Stack();
let number = decNumber;
let str = "";
let baseString = "0123456789ABCDEF";
while (number > 0) {
stack.arr.push(number % base);
number = Math.floor(number / base);
}
while (!stack.isEmpty()) {
str += baseString[stack.arr.pop()];
}
return str;
}