常にスタック機能を覚えている:LIFO
キュー:FIFO
スタックの例を書きます
1 // 8进制转换 2の#include <iostreamの> 3の#include <積層> 4 使って 名前空間STDを、 5 ボイド変換(int型N) 6 { 7 スタック< INT > 結果。 8 一方、(N) 9 { 10 result.push(N%8)。// 入栈 11 N = N / 8 。 12 } 13 ながら(!result.empty()) 14 { 15 COUT << result.top()。 16 result.pop()。// 出栈 17 } 18 } 19 のint main()の 20 { 21 変換(1348 )。 22 リターン 0 ; 23 }
私は、一致する括弧を書きました
1 // 括弧一致 2の#include <入出力ストリーム> 。3の#include <スタック>を 4。 使用した 名前空間STD; 5 BOOLサイド(チャー CH)// 判定が真、右括弧または左括弧では、括弧を残している、偽右ブラケットで 6 { 。7 IF(CH == ' (' || CH == ' [ ' ) 8。 復帰 trueに、 図9 他の 10 { 11 リターン falseに、 12である } 13である 14 } 15 BOOL MAT(チャー右、チャー左)// 左右のブラケットと同じタイプの2つの文字か否かを判断する 16 { 17。 IF(右== 「(」 &&左== 「)」) 18が 戻り trueに、 19 IF(右== ' [ ' &&左== ' ] ' ) 20が 戻り trueに、 21で 返す falseに、 22れる } 23で BOOLの一致(文字列STR) 24 { 25 スタック< チャー > 再; 26は オートW = str.begin(); 27 用(;!Str.end W =(); W ++ ) 28 { 29 IF(サイド(W *))// 左ブラケット 30 re.push(* W)、 31は 他の 32 { 33は IF(MAT(re.top()* W))// スタックに適合させることができ、左右のブラケットのブラケット 34が 、{ 35 (re.pop); 36 37 } 38 } 39 40 } 41 であれば(re.empty()) 42 リターン 真。 43 他の 44 { 45 リターン 偽。 46 } 47 48 } 49 50 のint main()の 51 { 52 // COUT <<一致( "[([] [])]")。 53 COUT <<一致(" [(])" )。 54 リターン 0 ; 55 }