數據結構——棧

棧是最基本的數據結構之一,他的特色是:後進先出git

棧的基本功能

  1. 進棧:添加元素到棧頂
  2. 出棧:刪除棧頂的元素並返回
  3. 讀取棧頂的數據元素
  4. 判斷棧是否爲空,爲空返回true
  5. 計算棧存儲數據的大小
  6. 清空棧
  7. 打印棧中的全部元素

代碼實現

基本的架構以下所:數據結構

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——進棧操做
this.enStack = function(m){
        item.push(m);
    }
  • this.deStack——出棧
this.deStack = function(){
        return item.pop();
    }
  • this.peek 讀取棧頂的元素
this.peek = function(){
        return item[item.length - 1];
    }
  • this.isEmpty 判斷棧是否爲空
this.isEmpty = function(){
        return item.length === 0;
    }
  • this.size 計算棧的容量
this.size = function(){
        return item.length;
    }
  • this.clear 清空棧
this.clear = function(){
        item = [];
    }
  • this.print 打印棧中的元素
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

相關文章
相關標籤/搜索