問題スタックの典型的な例 - マッチングブラケット

1つの // すべての右括弧は、比類のない、最近発生した左括弧にマッチします!
2の#include <入出力ストリーム>
 。3の#include <スタック>
 4。の#include < 文字列・H>
 5。 使用した 名前空間STDを、
 図6  のconst  int型のmaxLength = 100 ; // 最大文字列長
。7  ボイド PrintMatchedPairs(CHAR * 式){
 8。      スタック< INT > S;
 9      int型の長さ= STRLEN(式);
 10      INT J、
 11      のためにINT= I 0、Iは長さ<; Iは++ ){
 12は、         IF(式が[I] == ' ')s.push(I); // スタックに位置
13であり、         他の IF(式が[I] == ' ') { // 右ブラケット
14              IF {(s.empty()!)// スタックが空ではない
15                  (J = s.top); // 左ブラケット位置合わせ記録
16                  COUT << " 左括弧すなわち" << + J 。1 << " 右括弧付き文字すなわち" <<私は+ 。1 << "成功をマッチング文字" << てendl; 
 17                  s.pop(); // 成功した試合、スタック
18がある             } 
 。19              他の COUT << " いいえ右括弧すなわち"私は+ << 1。 << " 左括弧文字マッチング << ENDL; 
 20である         } 
 21である     }
 22は     、一方(!{s.empty())
 23である          J = s.top();
 24          s.pop();
 25          COUT << " いいえすなわち左ブラケット" << J + 1 < < "シンボルは、右括弧にマッチします<< てendl; 
26      }
 27  }
 28  INT メイン(){
 29      CHAR [ 10 ]。
30      のためには、int型 = Iを0 ; iは< 10 ; iは++)CINを>> [I]。
31      PrintMatchedPairs(A)。
32      リターン 0 33 }

 

おすすめ

転載: www.cnblogs.com/TYXmax/p/10987761.html