阅读下列说明和算法,回答问题1和问题2。 【说明】 算法5-1用来检查文本文件中的圆括号是否匹配。若文

9 查阅

阅读下列说明和算法,回答问题1和问题2。

【说明】

算法5-1用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如表5-1所示。

在算法5-1中,stack为一整数栈。算法中各函数的说明如表5-2所示。

【算法5-1】

将栈stack置空,置EOF为false

ch←nextch();

while(not EOF)

k←kind(ch);

ifk== (1) )

push( (2) ;push( (3) ;

else if(k== (4) )

if(not empty())

pop();pop();

else

显示错误信息(缺少对应左括号或右括号);

显示行号row;显示列号col;

endif

endif

ch←nextch();

endwhile

if(not empty())

显示错误信息(缺少对应左括号或右括号);

while(not empty())

row←pop();col←pop();

显示行号row; 显示列号col;

endwhile

endif

为了识别更多种类的括号,对算法5-1加以改进后得到算法5-2。算法5-2能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如表5-3所示。

【算法5-2】

将栈stack置空, 置EOF为false

ch←nextch();

while(not EOF)

k←kind(ch);

if(k>0)

if(判断条件 1)

push( (5) ); push( (6) ); push( (7) );

else if(判断条件2 and 判断条件3)

pop(); pop(); pop();

else

显示错误信息(缺少对应左括号或右括号);

显示行号row: 显示列号col;

endif

endif

ch←nextch();

endwhile

if(not empty())

显示错误信息(缺少对应左括号或右括号);

while(not empty())

pop(); row←pop(); col←pop();

显示行号row; 显示列号col;

endwhile

endif

请将【算法5-1】和【算法5-2】中(1)至(7)处补充完整。

参考答案:

(1) 1 (2) col (3) row (4) 2 (5) col (6) row (7) k(1) 1 (2) col (3) row (4) 2 (5) col (6) row (7) k

软考中级