编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值.测这要写到综合性实验报告里面
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 11:28:43
![编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值.测这要写到综合性实验报告里面](/uploads/image/z/88557-69-7.jpg?t=%E7%BC%96%E5%86%99%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0%E5%B0%86%E8%BE%93%E5%85%A5%E7%9A%84%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%BD%AC%E6%8D%A2%E6%88%90%E5%90%8E%E7%BC%80%E5%BC%8F%28%E9%80%86%E6%B3%A2%E5%85%B0%E5%BC%8F%29%2C%E5%B9%B6%E5%AF%B9%E5%90%8E%E7%BC%80%E5%BC%8F%E8%BF%9B%E8%A1%8C%E8%AE%A1%E7%AE%97%2C%E8%BE%93%E5%87%BA%E5%BE%97%E5%88%B0%E7%9A%84%E5%80%BC.%E6%B5%8B%E8%BF%99%E8%A6%81%E5%86%99%E5%88%B0%E7%BB%BC%E5%90%88%E6%80%A7%E5%AE%9E%E9%AA%8C%E6%8A%A5%E5%91%8A%E9%87%8C%E9%9D%A2)
编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值.测这要写到综合性实验报告里面
编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值.测
这要写到综合性实验报告里面
编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值.测这要写到综合性实验报告里面
这是数据结构中栈的一个应用实例:表达式的计算.
具体程序如下(PASCAL语言编写):
Program Houzhuishi;
Const smaxsise=100;
Type selement=char;
sposition=0..smaxsise;
stack=record
data:array[1..smaxsise] of selement;
top:sposition;
end;
stackerro=(noerro,empty,stackunderflow,stackoverflow);
Var
s:stack;
serro:stackerro;
strin,strout:string;
Function first(t:selement):integer;
Begin
case t of
'(':first:=0;
'+','-':first:=1;
'*','/':first:=2;
end;
End;
precedure change(strin,string;Var strout:string;Var s:stack);
Var t:selement;
md,me,mt:set of selement;
i,j:integer;
Begin
md:=['0'..'9','',';'];me:=['+','-','*','/','(',')'];
mt:=md+me;
strin:=strin+';';
strout;='';
for i:=1 to length(strin) do
if not(strin[i] in mt) then
begin
strout:='change erro!';exit;
end;
spush('(',s);
for i:=1 to length(strin) do
case strin[i] of
'':;
'0'..'9':strout:=strout:strin[i];
'(':spush(strin[i],s);
')',';':repeat
spop(t,s);
if t'(' then
strout:strout+t;
until (t='(')or(sempty(s));
'+','-','*','*':begin
stop(t,s);
while first(strin[i]