堆栈应用括号匹配实验

Description

1、问题描述
一个算术表达式中包括圆括号、方括号和花括号三种形式的括号
编程实现判别表达式中括号是否正确匹配的算法

2、算法
    顺序扫描算术表达式
    若算术表达式扫描完成,此时如果栈空,则正确返回(0);如果栈未空,说明左括号多于右括号,返回(-3)
    从算术表达式中取出一个字符,如果是左括号(‘(‘或‘[‘或 ‘{‘),则让该括号进栈(PUSH)
    如果是右括号(‘)‘或‘]‘或 ‘}‘):
⑴、如果栈为空,则说明右括号多于左括号,返回(-2)
⑵、如果栈不为空,则从栈顶弹出(POP)一个括号: 若括号匹配,则转1继续进行判断;否则,说明左右括号配对次序不正确,返回(-1)

Input

第一行:样本个数,假设为n。
第二到n+1行,每一行是一个样本(算术表达式串),共n个测试样本。

Output

共有n行,每一行是一个测试结果,有四种结果:
0:左右括号匹配正确
-1:左右括号配对次序不正确
-2:右括号多于左括号
-3:左括号多于右括号

Sample Input

4 {[(1+2)*3-1] {[(1+2]*3)-1} {[(1+2)*3]-1} (1+2)*3)-1}

Sample Output

-3 -1 0 -2
原文地址:https://www.cnblogs.com/suiyun/p/2722895.html