#include
#include
#define maxn 100005
char s[maxn]
,infixlist[maxn][10
];char suffix[maxn][10
];int p=0;
char tmp[maxn]
;int p1=0;
//把字串根據運算元、運算子、括號拆開,儲存到infixlist陣列中
inttoinfixexpression
(char
*s) tot++;}
else
}return tot;
}//獲得優先順序
intgetpriority
(char c)
//轉換成字尾表示式
void
parsesuffixexpression
(char s[
10],int n)
else
if(s[i][0
]=='(')
else
if(s[i][0
]==')')
p1--;}
else
tmp[p1++
]=s[i][0
];}}
while
(p1!=0)
}//計算乙個以字串形式儲存的數的值
intparseint
(char
*s)return ans;
}//將數k轉化成字串形式儲存到指標s開始的地方
void
parsestring
(char
*s,int k)
while
(k!=0)
;for
(int i=point-
1,j=
0;i>=
0;i--
,j++)*
(s+point)
='\0';}
//計算字尾表示式的值
intcalculate()
else
else
if(suffix[i][0
]=='-')
else
if(suffix[i][0
]=='*')
else
if(suffix[i][0
]=='/')
res=a/b;
printf
("(%d) %d / %d = %d\n"
,m++
,a,b,res);}
parsestring
(t[point]
,res)
; point++;}
}return
parseint
(t[0])
;}intmain()
}
計算字串表示式的值
舉個簡單的例子,平常我們寫的數學表示式a b,就是一種中綴表示式,寫成字尾表示式就是ab 再舉乙個複雜的例子,中綴表示式 a b c a b e的逆波蘭式是ab c ab e 1 首先,需要分配1個棧,用於臨時儲存運算子,此運算子在棧內遵循越往棧頂優先順序越高的原則 2 從中綴式的左端開始逐個讀取字...
字串表示式計算C 程式設計
字串表示式計算c 程式設計 在程式設計應用程式過程中,有時需要字串表示式的值。如字串 23 56 102 100 36 24 8 6 結果 191。根據資料結構棧的應用介紹,通過把表示式由中序式轉換成後序式,再用棧來進行計算。如上述字串表示式 23 56 102 100 36 24 8 6 轉換為後...
字串 中綴 字尾 計算表示式的值
includeusing namespace std include define maxsize 100 stackstack1 棧來放字尾表示式的符號 char suffix maxsize 轉化後的字尾表示式 int n 1 表示suffix字元陣列的index,初始化為 1 int prio...