有効性をチェックするために、後置式 (例: 3 5 +) を含む文字列 (配列、何か) を評価する良い方法は何でしょうか?
Matt
質問する
15577 次
4 に答える
18
ここで、有効とは、コードを実行してもスタックがアンダーフローせず、スタックに単一の値が残ることを意味すると仮定しています。より厳密な有効性の概念がある場合は、より洗練されたチェッカーが必要になります。
この種の有効性を確認したい場合は、文字列を評価する必要はなく、スタックではなくカウンターを使用できます。カウンターは、評価した場合にスタックにある値の数を追跡します。簡単にするために、リテラル、2 項演算子、および単項演算子しかないとします。このアルゴリズムは、特別なデクリメント操作を使用します。デクリメント時にカウンターがゼロを下回ると、文字列は無効になります。
- カウンターを 0 に初期化します。
- リテラルが表示されたら、カウンターをインクリメントします。
- 二項演算子が表示されたら、カウンターを 2 回デクリメントしてからインクリメントします。
- 単項演算子が表示されたら、カウンターをデクリメントしてからインクリメントします。
- 文字列の最後で、カウンターが 1 で、0 を下回ったことがない場合、文字列は有効です。
于 2009-04-25T22:40:13.513 に答える
0
後置式が有効かどうかを確認するには: (入力が char 配列の場合) 1.オペランドの数は no と等しくなければなりません。演算子 + 1 の数。これを確認するには、チェック変数を保持します。チェック=0。オペランドごとにこれを増やし、演算子ごとに減らします。最終的にその値が 1 の場合、式は有効です。
2.配列の最初の 2 つの要素はオペランドである必要があります。後置式は、演算子を 1 番目または 2 番目の要素として持つことはできません。if 制御文で確認してください。
于 2014-10-31T09:22:23.180 に答える