法兰理论重量表:pascal高手请进来帮小弟一把啊

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 07:59:42
哪位高手帮小弟看看把,高级编程,用pascal语言写完保存为文本文档
题目是:括号匹配。假设算术表达式保存在一个字符串变量中,表达式中有三中括号:()、[]、{},它们可以按任意次序嵌套使用,
如(...[...(...{...(...)...}...)...]...),编程判断表达式中括号是否配对出现,若配对正确,则输出OK,否则输出ERROR.表达式由用户交互输入.
拜托了

var stack:array[0..256]of char;
x:string;
top,i:integer;
begin
readln(x);top:=0;
for i:=1 to length(x) do
if (x[i]='(')or(x[i]='[')or(x[i]='{')then begin
top:=top+1;
stack[top]:=x[i];
end
else if (x[i]=')')or(x[i]=']')or(x[i]='}')then begin
top:=top-1;
if top<0 then begin write('ERROR');halt end;
if (x[i]=')')and(stack[top+1]<>'(')then begin write('ERROR');halt end;
if (x[i]=']')and(stack[top+1]<>'[')then begin write('ERROR');halt end;
if (x[i]='}')and(stack[top+1]<>'{')then begin write('ERROR');halt end;
end;
if top=0 then write('OK') else write('ERROR');
end.

用一个栈保存括号就行了,如果是左括号就入栈,右括号就和栈顶比较,不配对或栈下溢则错误,配对则退栈。若最后栈为空则正确,否则错误