堆栈应用括号匹配实验

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/archive/2012/10/13/2722895.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值