栈是一种听从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称做栈顶,另外一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 栈也被用在编程语言的编译器和内存中保存变量、方法调用等。典型的有函数调用。git
// 后进先出
function Stack() {
const items = [];
this.push = (...ele) => items.push(...ele);
this.pop = () => items.pop();
this.peek = () => items[items.length-1];
this.isEmpty = () => !items.length;
this.size = () => items.length;
this.clear = () => items = [];
this.print = () => console.log(items);
}
const stack = new Stack();
stack.push(1,2,3,4);
stack.print();
复制代码
// 任意进制
function baseTransform(decNumber, base) { // 被除数
const remStack = new Stack();
let rem; // 余数
const digits = '0123456789ABCDEF';
let result = '';
while (decNumber > 0) {
rem = decNumber % base;
remStack.push(rem);
decNumber = Math.floor(decNumber / base);
}
while(!remStack.isEmpty()) {
result += digits[remStack.pop()];
}
console.log('result => ',result);
return result;
}
baseTransform(10, 2); // => 1010
复制代码
栈是最简单的数据结构,遵循的是后进先出的原则。编程