栈应用——平衡符号
来源:互联网 发布:linux cdn服务器搭建 编辑:程序博客网 时间:2024/05/17 08:02
平衡符号用于编译器检查程序的语法错误,每一个右括号( }、]、))必然对应其相应的左括号(eg: [()] 合法;[(])不合法)
算法描述:
·做一个空栈,读入字符直到文件尾;
·如果字符是一个左括号则将其压入栈,
如果字符是一个右括号:如此时栈空,报错;否则,弹出栈顶元素,若与相应的左括号不匹配,报错;
·到文件尾,栈非空则报错;
算法分析:
时间复杂度为O(N),且对于输入进行一趟检验,是联机的;
代码实现 (只满足 {} 、[] 、()):
void balanceMark(string s){stackmark;for (size_t i = 0; i < s.length(); ++i) {switch (s[i]) {case '{':mark.push('{');break;case '[':mark.push('[');break;case '(':mark.push('(');break;case ')':if (mark.size() == 0 || mark.top() != '(') {cout<<"error with ()";return ;}mark.pop();break;case ']':if (mark.size() == 0 || mark.top() != '[') {cout << "error with []";return;}mark.pop();break;case '}':if (mark.size() == 0 || mark.top() != '{') {cout << "error with {}";return;}mark.pop();break;default:break;}}if (mark.size() != 0) {cout << "error with: ";while (!mark.empty()) {cout << mark.top();mark.pop();}return;}cout << "get a balance mark";}
加上main函数可以加以实验:
int main(){string s;char c;while (cin >> c) s.push_back(c);balanceMark(s);system("pause");}
阅读全文
0 0
- 栈应用—平衡符号
- 栈的应用——平衡符号
- 栈应用——平衡符号
- 栈的应用 — 平衡符号
- 栈的应用—平衡符号
- 栈的应用---平衡符号
- 栈的应用--平衡符号
- 栈的应用---平衡符号
- 栈的应用----平衡符号
- 重学数据结构005——栈的应用之平衡符号
- 栈的应用之平衡符号
- 栈的应用-平衡符号(C版)
- 栈的应用:平衡符号问题
- 平衡符号(栈应用一)
- 栈的应用---平衡符号的检测
- javascript栈的应用之符号平衡
- 栈的应用 - 符号平衡问题
- Java栈的应用检测平衡符号
- Android 开发--CSDN博客大神汇总
- java数据结构与算法-递归解决汉诺塔问题
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- Unix哲学
- TP5整合 WorkerMan 以及 GatewayWorker
- 栈应用——平衡符号
- [POJ](3268)Silver Cow Party ---最短路径(图)
- 2017网易前端笔试题总结
- spring-cloud-consumer-hystrix(六)
- Maven打包命令
- Unable to add window -- token null is not valid; is your activity running?
- java 学习笔记之AtomicInteger类的使用
- 无需XML的hibernate
- C语言读取配置文件