关于PASCAL的1个程序

来源:百度知道 编辑:UC知道 时间:2024/05/10 09:38:56
题目:将一个中缀运算式转换为后缀运算式,然后计算
例如3*(2+7)转换后变成327+*,转换好后再计算
要求 用栈来实现此程序,要求所有过程用子程序完成,一个栈放运算符,一个栈放数,最好是数组栈

这是转换 用的栈
计算很简单的 自己写吧 当是练习 !

const
smaxsize=100;
type
selement=char;
sposition=0..smaxsize;
stack=record
data:array[1..smaxsize] of selement;
top:sposition;
end;
stackerror=(noerro,empty,underflow,overflow);
var
s:stack;
serro:stackerror;
strin,strout:string;

procedure screate(var s:stack);
begin
s.top:=0;
serro:=noerro;
end;

function sempty(var s:stack):boolean;
begin
sempty:=(s.top=0);
end;

function sfull(var s:stack):boolean;
begin
sfull:=(s.top=smaxsize);
end;

procedure push(e:selement; var s:stack);
begin
if sfull(s) then serro:=overflow
else begin
s.top:=s.top+1;
s.data[s.top]:=e;
end;
end;

procedure pop(var e:selement; var s:stack);
begin
if sempty(s) then serro:=underflow
else begin