栈是最基本的数据结构之一,他的特色是:后进先出git
基本的架构以下所:数据结构
function Stack(){ let item = []; /** * 添加元素到栈顶 * @param m 进栈的元素 */ this.enStack = function(m){ } /** * 出栈,删除栈顶的元素并返回 */ this.deStack = function(){ } /** * 读取栈顶的元素 */ this.peek = function(){ } /** * /判断栈是否未为空 */ this.isEmpty = function(){ } /** * 计算栈的容量 */ this.size = function(){ } /** * 清空栈 */ this.clear = function(){ } /** * 打印栈中的全部元素 */ this.print = function(){ } }
this.enStack = function(m){ item.push(m); }
this.deStack = function(){ return item.pop(); }
this.peek = function(){ return item[item.length - 1]; }
this.isEmpty = function(){ return item.length === 0; }
this.size = function(){ return item.length; }
this.clear = function(){ item = []; }
this.print = function(){ console.log(item.toString()); }
在进制转化的结果是将余数倒着排列,这时就须要用到栈,先获得的余数放后面,后获得的余数放前面,具体实现过程架构
十进制转化为二进制的计算方式:除2取余法this
代码实现过程:spa
function transformTo(decNumber){ let remStack = new Stack(); let rem = ''; let remString = ''; while(decNumber){ rem = decNumber % 2; remStack.enStack(rem); decNumber = parseInt(decNumber / 2); } while(!remStack.isEmpty()){ remString += remStack.deStack().toString(); } return remString; } const decRes = transformTo(10); console.log(decRes);
最后的输出结果是:1010code
function transformTo(decNumber, base){ let remStack = new Stack(); let rem; let remString = ""; let digits = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F']; while(decNumber > 0){ rem = decNumber % base; remStack.enStack(rem); decNumber = parseInt(decNumber / base); } while(!remStack.isEmpty()){ remString += digits[remStack.deStack()]; } return remString; } const decRes = transformTo(1200, 16); console.log(decRes);
输出结果是:4B0orm