スタックの式の変換をC言語で説明する
スタックは線形データ構造であり、データは一方の端でのみ挿入および削除されます。
アルゴリズム
以下に示すのは、プッシュ()のアルゴリズムです。 −
- スタックオーバーフローを確認します。
if (top = = n-1) printf("stack over flow");
- それ以外の場合は、要素をスタックに挿入します。
top ++ a[top] = item
以下に示すのは、 Pop()のアルゴリズムです。 −
- スタックのアンダーフローを確認します。
if (top = = -1) printf("stack under flow");
それ以外の場合は、スタックから要素を削除します。
item = a[top] top --
以下に、Display()-
のアルゴリズムを示します。if (top == -1) printf ("stack is empty");
それ以外の場合は、以下のアルゴリズムに従ってください。
for (i=0; i<top; i++) printf ("%d", a[i]);
スタックの適用
C言語でのスタックの式の変換を理解しましょう。
表現 −これはオペランドと演算の合法的な組み合わせです。
式の種類
変換と評価を実行できるC言語の式には3つのタイプがあります。以下に説明します-
-
中置式-演算子はオペランドの間にあります。たとえば、A + B
-
プレフィックス式-演算子はオペランドの前にあります。たとえば、+ AB
-
後置式-演算子はオペランドの後にあります。たとえば、AB +
中置から後置への変換と中置から前置への変換については、以下で説明します-
Infix to postfix Infix to prefix A+ B*C A+ B*C A+ BC * A+ *BC ABC* + +A*BC
たとえば、
A + B * C / D-E+Fの接尾辞を接尾辞と接頭辞に変換します。
Infix to prefix Infix to postfix A +B*C / D-E+F A +B*C / D-E+F A +*BC / D-E+F A +BC* / D-E+F A + / *BCD -E+F A +BC*D /-E+F +A /*BCD -E +F ABC *D /+ -E+F -+A/*BCDE +F ABC *D/ +E- +F + - +A/*BCDEF ABC *D / +E –F+
アルゴリズム
入力文字列を左から右にスキャンし、以下の手順に従います-
-
ステップ1-入力記号がオペランドの場合は、モニターに出力します。
-
ステップ2-入力記号が‘(‘の場合は、スタックにプッシュします。
-
ステップ3-入力記号が「)」の場合、「(」が表示されるまでスタックのすべての内容をポップアウトします。
-
ステップ4-入力シンボルが演算子の場合、現在の入力シンボルでスタックの最上位にある演算子の優先度を確認します。
スタックの最上位の最優先順位が現在のシンボルの優先順位以上である場合は、スタックの内容をポップアウトして、現在のシンボルをスタックに配置します。
それ以外の場合は、オペレーターをスタックにプッシュします。
-
ステップ5-入力記号が「\0」の場合は、スタックの内容が空になるまでポップアウトします。
スタックを使用した中置から後置への変換を以下に示します-
-
ユニオンにC言語でのポインタを説明する
ユニオンはメモリロケーションと呼ばれ、さまざまなデータ型のいくつかの変数によって共有されます。 構文 構文は次のとおりです- union uniontag{ datatype member 1; datatype member 2; ---- ---- datatype member n; }; たとえば、 union sample{ int a; float b; char c; }
-
C言語でのポインタアクセスの概念を説明する
ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操