用栈来实现括号匹配问题
2015-10-24 23:16
239 查看
在这里只做简单的一个括号匹配的问题
其实思想都是一样的,若碰到左的,都入栈,右的,且原来的栈不为空,则拿出来进行匹配,成功了则继续往下做,否则,直接跳出循环。
在这里为了省略起见,用了stl
比较好得有http://blog.csdn.net/kkkkkxiaofei/article/details/8293980 http://blog.chinaunix.net/uid-7864162-id-2038901.html这两个博客个人感觉写的比较好
其实思想都是一样的,若碰到左的,都入栈,右的,且原来的栈不为空,则拿出来进行匹配,成功了则继续往下做,否则,直接跳出循环。
在这里为了省略起见,用了stl
#include<iostream> #include<stack> #include<cstring> #include<string> using namespace std; int main() { int i, j, k, n, m; char s[100]; bool flag; while (cin >> s) { flag = true; stack<char>a; while (!a.empty()) { a.pop(); } //这里是核心的代码,在做匹配的时候,若碰到左括号则入栈,碰到右括号且栈不为空,则出栈一个, //否则直接跳出循环,失败,最后还要检查栈是否为空 for (i = 0; i < strlen(s); i++) { if (s[i] == '(') a.push(s[i]); else if (s[i] == ')'&&a.empty() == false) a.pop(); else if (s[i] == ')'&&a.empty()) { flag = false; break; } else continue; } if (a.empty() == false) flag = false; if (flag) cout << "成功"; else cout << "失败"; cout << endl; } return 0; }
比较好得有http://blog.csdn.net/kkkkkxiaofei/article/details/8293980 http://blog.chinaunix.net/uid-7864162-id-2038901.html这两个博客个人感觉写的比较好
相关文章推荐
- 敏捷测试的方法和实践
- 2015年10月19日作业
- hdu 1078 记忆化搜索
- mysql5.7新特性
- Xcode 增强开发效率的插件
- Linux进程管理
- c++ 算法设计与分析(第四版) 流水作业调度
- mysql5.7新特性
- demo online
- 运行错误:error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or
- 机器学习(十三)学习SVM支持向量机的直观感受
- 求出1--100之间的素数
- R语言学习之 apply家族的使用
- mysql5.7新特性
- 关于xcode中提示"_OBJC_CLASS_$_ClassName", referenced from"错误的解决方法
- 数组指针和指针数组
- 调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步
- Android HttpURLConnection And HttpClient
- 利用Mybatis拦截器统计sql执行时间及打印能直接运行的sql语句
- jquery瀑布流下拉加载(position定位版)