
#include
#include
int length(char String[]) {
int count = 0;
for (int i = 0; String[i] != ';'++ i)++
count;return
; count}
void
after (char[ String])int {
= len length ()String;char
[ stack19];//char *stack = (char *)malloc(sizeof(char)*len);
char
[ ch6]= '+' { ,'-','*','/','(',')'} ;int
= top - 1;for
( int= i 0 ;< i ; len++ i)//printf("c:%c\n", String[i]); {
int
= flag 0 ;//判断是否是字母还是运算符for
( int= j 0 ;< j 6 ;++ j)if {
( [String]i== [ ch]j)= {
flag 1 ;break
;}
}
//printf("%d\n", flag);
if
( ==flag 0 )printf {
("%c",[ String]i);continue
;}
else
if {
( [String]i== ')' )//(*)内容全部出栈 {for
( ;[ stack]top!= '(' ;-- top)printf {
("%c",[ stack]top);}
--
top;//printf("%d\n", top);
continue
;}
if
( ==top - 1|| [ String]i== '(' )[ {
stack++]top= [ String]i;continue
;}
else
if {
( [stack]top== '(' )[ {
stack++]top= [ String]i;continue
;}
int
, pr; pp//pr表示字符当前状态,pp表示栈顶状态,用数字表示-+为0,*/为1if
( [String]i== '+' || [ String]i== '-' )= {
pr 0 ;}
if
( [String]i== '*' || [ String]i== '/' )= {
pr 1 ;}
if
( [stack]top== '+' || [ stack]top== '-' )= {
pp 0 ;}
if
( [stack]top== '*' || [ stack]top== '/' )= {
pp 1 ;}
if
( <=pr ) ppint {
= cc 0 ;for
( int= j 0 ;<= j ;top++ j)if
( [stack]j== '(' )= {
cc 1 ;break ;}
if
( ==cc 1 )for {
( ;[ stack]top!= '(' ;-- top)printf
("%c",[ stack]top);}
else
for
{
( ;0 top >= ;-- top)printf
("%c",[ stack]top);}
[
stack++]top= [ String]i;}
else
[ {
stack++]top= [ String]i;}
}
}
}
for
( ;!= top - 1;-- top)printf {
("%c",[ stack]top);}
}
void
main ()char
{
[ String]= "a+b-a*((c+d)/e-f)+g" ;after
()String;}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)