從左到右進行掃瞄,若為數字直接輸出;
若為字元:<1> 若棧為空,直接入棧;
<2> 若該操作符優先順序大於棧出口操作符的優先順序,直接入棧;
<3>若優先順序第於棧出口操作符的優先順序,進行出棧操作;直到該操作符優先順序大於棧出口操作符的優先順序,再將該字元入棧;
若為「(」 直接入棧;
若為「)」,出棧操作,直到遇到「(」,包括「(」;
若掃瞄完,棧中仍有字元,直接出棧;
下面給出**;
#include
#include
#include
#define maxsize 200
typedef
struct stackstack;
void
init
(stack *obj)
intempty
(stack *obj)
intfull
(stack *obj)
intpop
(stack *obj,
char
*c)int
push
(stack *obj,
char c)
intchoose
(char c)
intmain()
else
if(x[i]
=='('
)else
if(x[i]
==')')if
(w==
'(')
break;}
}else
if(w==
'(')
break;}
push
(obj,x[i]);
}else
push
(obj,x[i]);
}}while
(obj->top !=-1
)return0;
}
謝謝瀏覽;
棧應用 中綴轉字尾 字尾計算
中綴表示式 infix expression 即 平時生活中大家對於算式的書寫格式 eg 6 5 2 3 8 3 字尾表示式 post expression 即 把數字和運算子分開,把運算子的優先順序運算內涵到字尾式的數字和運算子的順序 中 故其 優點就是,沒有必要知道任何優先的規則 乙個運算子只對...
中綴轉字尾(棧)
字尾表示式也叫逆波蘭表示式,其求值過程可以用到棧來輔助儲存。假定待求值的字尾表示式為 6 5 2 3 8 3 則其求值過程如下 1 遍歷表示式,遇到的數字首先放入棧中,此時棧如下所示 2 接著讀到 則彈出3和2,執行3 2,計算結果等於5,並將5壓入到棧中。3 讀到8,將其直接放入棧中。4 讀到 彈...
棧的應用之中綴轉字尾
include stdio.h include stdlib.h include string.h include linkstack.h int isnumber char c int isoperator char c int isleft char c int isright char c c...