棧是最基本的數據結構之一,他的特色是:後進先出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