概念
栈是遵从一种先进后出(LIFO)的有序集合
实现栈
function Stack() {let items = [];// 向栈内添加元素this.push = function(element) {items.push(element);}// 从栈顶移除元素this.pop = function() {return items.pop();}// 查看栈顶元素this.peek = function() {return items[items.length - 1];}// 检查栈是否为空this.isEmpty = function() {return items.length == 0;}// 查看栈的长度this.size = function() {return items.length;}// 清空栈this.clear = function() {items = [];}// 打印栈元素this.print = function() {console.log(items.toString());}}
栈的应用
10进制转2进制
function divideBy2(decNumber) {var remStack = new Stack();var rem;var binaryString = '';while(decNumber > 0) {rem = Math.floor(decNumber % 2);remStack.push(rem);decNumber = Math.floor(decNumber / 2);}while(!remStack.isEmpty()) {binaryString += remStack.pop().toString();}return binaryString;}
