棧是一種聽從後進先出(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
複製代碼
棧是最簡單的數據結構,遵循的是後進先出的原則。編程