利用栈解决符号匹配问题
2013-06-09 14:37
176 查看
看到《数据结构》书中,有提到这个栈应用,就自己写个C++实现下~~熟悉下
#include <iostream> using namespace std; #include <stack> #include <string.h> /* 用栈实现,判断(),[]在等式中是否配对正确 几种特殊情况要考虑到, 1.当没有与之配对的栈,则是匹配错误例如:()[]] 2.当退出时候,需要判断栈是否为空,是否都有判断过;例如[() author : cheng 2013.6.9 */ bool is_match(char *s) { int i; char temp; stack<char>m_stack; for(i =0; s[i]!=0;i++) { if(s[i]=='('|| s[i]== '[') m_stack.push(s[i]); else if(s[i]==')' || s[i] == ']') { if(m_stack.size()==0) //当没有与之配对的栈,则是匹配错误()[]] return false; temp = m_stack.top(); switch(temp) { case '(': { if(s[i]==')') { m_stack.pop(); break; } else return false; } case '[': { if(s[i] ==']') { m_stack.pop(); break; } else
return false; } } } else //other char to skip it continue; } if(m_stack.size()==0) //check if all symbol match already 例如:[() return true; else return false; } int main() { char src[1000]; while(scanf("%s",src)!=EOF) { if(is_match(src) == 1) cout<<"match OK!"<<endl; else cout<<"Mis match,Please check it!"<<endl; } return 0; }
相关文章推荐
- Java利用栈解决符号匹配问题
- 利用动态规划解决-字符串的匹配问题
- 利用Trie图模板解决多模匹配问题(HDU3695)
- 利用匈牙利算法&Hopcroft-Karp算法解决二分图中的最大二分匹配问题
- 利用触发器和INSERT INTO ...SELECT...解决Oracle 数据匹配问题
- 用栈解决符号匹配问题
- 利用匈牙利算法&Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
- C语言及程序设计初步例程-26 利用switch语句解决问题
- pythonanywhere下django无法匹配url问题解决
- 利用nginx 反向代理解决跨域问题
- 利用C语言小程序来解决大问题
- 利用递归解决进制转换问题
- 利用数据库唯一约束解决线程安全的一个问题
- HDU 3488 Tour 用费用流解决完美匹配最小费用问题
- 第十周项目三 利用二叉树遍历思想解决问题
- Windows 系统利用anaconda/Pycharm解决 python2 与 python3 共存问题
- win7下,QT 及 QGLViewer 环境配置总结 | 版本匹配问题 | 解决debug模式下无法打开窗口
- .net利用程序集的GUID解决程序只能运行一次的问题
- 缩短MTTR:利用机器学习解决问题
- 算法研究:利用Python解决数学计数原理问题