括号匹配问题——用栈实现
2017-04-18 12:41
169 查看
一个字符串中的括号的不匹配分为左括号多,右括号多或者次序问题
在检测一个字符串中的字符如果是括号并且是左括号将它入栈,如果是右括号判断与栈顶元素是否匹配如果匹配将栈顶元素出栈如果不匹配返回false并输出括号次序不匹配。当栈为空且字符串没有遍历完且其中还有右括号时返回false输出右括号多于左括号,当字符串遍历完时栈不为空则返回false输出左括号多于右括号。只有当栈为空且遍历完字符串时括号才匹配bool IsBrackets(const char c) { if ('(' == c ||'[' == c || '{' == c || ')' == c || ']' == c || '}' == c) { return true; } return false; } bool MatchBrackets(char arr[], size_t size) { stack<char> s; size_t i = 0; for (i = 0; i < size; i++) { if (IsBrackets(arr[i])) { if ('(' == arr[i] || '[' == arr[i] || '{' == arr[i]) { s.push(arr[i]); } if (')' == arr[i] || ']' == arr[i] || '}' == arr[i]) { if (s.empty()) { cout << "右括号多于左括号" << endl; return false; } if (')' == arr[i]) { if ('(' == s.top()) { s.pop(); continue; } } if (']' == arr[i]) { if ('[' == s.top()) { s.pop(); continue; } } if ('}' == arr[i]) { if ('{' == s.top()) { s.pop(); continue; } } cout << "左右括号次序不匹配" << endl; return false; } } } if (s.empty()) { return true; } cout << "左括号多于有括号" << endl; return false; }
相关文章推荐
- 括号匹配问题--栈实现
- 数据结构(18)栈典型问题之C++实现括号匹配
- 动态栈的实现,括号匹配问题,逆波兰表达式
- 链栈的简单实现及括号匹配问题的链栈解决方法
- 括号匹配问题——用栈实现
- 栈之括号匹配问题(java实现)
- ACM括号匹配问题(java实现)
- 括号匹配问题 栈的应用 C语言实现
- 括号匹配问题——用栈实现
- 括号匹配问题(顺序栈实现)
- 用栈实现括号匹配问题
- 括号匹配问题,用栈实现
- 用栈来实现括号匹配问题
- 数据结构课程设计:括号匹配问题(实现检验匹配并输出不匹配的位置)
- Python实现求解括号匹配问题的方法
- Java实现用栈判断括号匹配问题
- JS简单实现括号匹配问题
- 数据结构作业 栈 实现 括号匹配 问题
- JS简单实现括号匹配问题
- java利用栈实现括号()[]匹配问题