熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

棧和隊列 - 棧和隊列的應用實例 - 棧的應用實例(一)

2022-06-13   來源: 數據結構 

  棧和隊列的應用非常之廣只要問題滿足後進先出和先進先出原則均可使用棧和隊列作為其數據結構

  棧的應用

   數制轉換

  將一個非負的十進制整數N轉換為另一個等價的基為B的B進制數的問題很容易通過除B取余法來解決

  【例】將十進制數轉化為二進制數

  解答按除取余法得到的余數依次是則十進制數轉化為二進制數為

  分析由於最先得到的余數是轉化結果的最低位最後得到的余數是轉化結果的最高位因此很容易用棧來解決

  轉換算法如下

  typedef int DataType;//應將順序棧的DataType定義改為整型

  void MultiBaseOutput (int Nint B)

  {//假設N是非負的十進制整數輸出等值的B進制數

  int i;

  SeqStack S;

  InitStack(&S);

  while(N){ //從右向左產生B進制的各位數字並將其進棧

  push(&SN%B); //將bi進棧<=i<=j

  N=N/B;

  }

  while(!StackEmpty(&S)){ //棧非空時退棧輸出

  i=Pop(&S);

  printf(%di);

  }

  }

  除數制的轉換外棧還可用於解決括號匹配檢查行編輯處理和表達式求解等問題具體【參見參考書目】


From:http://tw.wingwit.com/Article/program/sjjg/201311/23920.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.