【项目3 - 括号的匹配】
来源:互联网 发布:淘宝助理批量修改 编辑:程序博客网 时间:2024/06/07 16:52
问题:
假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。
例如,输入2+(3+4)*[2+{[3]}]-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。
提示:(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者_____________,则可以得出不配对的结论。(2)也可以设计一个返回值为布尔型的函数,参数为要配对的表达式,为一个字符串。
代码:
头文件详见【项目1-建立顺序栈算法库】
<pre name="code" class="cpp">#include <stdio.h>#include "SqStack.h"bool isMatch(char *st){ int d=1, i; char c; SqStack *s; InitStack(s); for(i=0; st[i]!='\0'&&d; i++) { switch(st[i]) { case'(': case'[': case'{': Push(s, st[i]); break; case')': if(StackEmpty(s)) { d=0; break; } Pop(s, c); if(c!='(') d=0; break; case']': if(StackEmpty(s)) { d=0; break; } Pop(s, c); if(c!='[') d=0; break; case'}': if(StackEmpty(s)) { d=0; break; } Pop(s,c); if(c!='{') d=0; break; } } if(StackEmpty(s)&&d==1) return true; else return false;}int main(){ char st[50]; printf("请输入表达式:"); scanf("%s", st); if(isMatch(st)) printf("配对正确!!\n"); else printf("配对错误!!\n"); return 0;}
运行结果:
0 0
- 项目 3 - 括号的匹配
- 【项目3 - 括号的匹配】
- 项目3——括号的匹配
- 第六周--项目3括号的匹配
- 第六周 项目3-括号的匹配
- 第六周项目3括号的匹配
- 第六周 项目3 括号的匹配
- 第六周 项目3-括号的匹配
- 第六周项目3-括号的匹配
- 第六周项目3--括号的匹配
- 第六周项目3-括号的匹配
- 第六周-项目3-括号的匹配
- 第六周项目3-括号的匹配
- 第六周项目3--括号的匹配
- 第六周 项目3-括号的匹配
- 第六周项目3-括号的匹配
- 第六周项目3 括号的匹配
- 第六周项目3括号的匹配
- CNN人脸关键点检测
- android 6.0
- burpsuite1.6安装使用方法详解
- Spark调优之旅<一>
- 查询数据库中重复记录的方法
- 【项目3 - 括号的匹配】
- php 如何防止不同项目的 session key冲突
- AndroidStudio导入新项目一直卡在Building gradle project info的解决解决方案
- Bitmap二次采样
- of_device_id
- jquery插件实现图片可拖动的购物车代码
- uibuuton 折行显示 主标题,副标题
- swift中UITextField的使用
- 初识android设计模式—MVP