解釋 C 語言中棧表示式轉換


是一種線性資料結構,其中資料僅在一個端點插入和刪除。

演算法

以下是 **Push ( )** 的演算法:

  • 檢查棧溢位。
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 語言中有三種 型別的表示式 可以進行轉換和求值。它們在下面解釋:

  • 中綴表示式 - 運算子位於運算元之間。例如,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',則彈出棧中的內容,直到它變為空。

使用棧將中綴表示式轉換為字尾表示式的過程如下所示:

更新時間: 2024-06-21

2K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.