括号匹配
来源:互联网 发布:网络机房管理制度 编辑:程序博客网 时间:2024/05/22 06:39
基于栈的括号匹配
#include<iostream>using namespace std;#define MAXSIZE 100typedef char Elemtype;typedef struct{ Elemtype elem[MAXSIZE]; int top;}Seqstack;void Initstack(Seqstack &s);bool Isempty(Seqstack s);bool Isfull(Seqstack s);void Push(Seqstack &s, Elemtype e);void Pop(Seqstack &s, Elemtype &e);void Gettop(Seqstack s, Elemtype &e);void BracketMatch(char *str);int main(){ char str[MAXSIZE]; cin >> str; BracketMatch(str); return 0;}void Initstack(Seqstack &s){ s.top = -1;}bool Isempty(Seqstack s){ if (s.top == -1) { return true; } else { return false; }}bool Isfull(Seqstack s){ if (s.top == MAXSIZE - 1) { return true; } else { return false; }}void Push(Seqstack &s, Elemtype e){ if (Isfull(s)) { cout << "顺序栈已满!" << endl; } else { s.top++; s.elem[s.top] = e; }}void Pop(Seqstack &s, Elemtype &e){ if (Isempty(s)) { cout << "顺序栈为空!" << endl; } else { e = s.elem[s.top]; s.top--; }}void Gettop(Seqstack s, Elemtype &e){ if (Isempty(s)) { cout << "顺序栈为空!" << endl; } else { e = s.elem[s.top]; }}void BracketMatch(char *str){ Seqstack s; char e; Initstack(s); for (int i = 0; str[i] != '\0'; i++) { switch (str[i]) { case '(': case '[': case '{': Push(s, str[i]); break; case ')': { if (Isempty(s)) { cout << "右小括号多余!" << endl; exit(1); } else { Pop(s, e); if (e != '(') { cout << "小括号不匹配!" << endl; exit(1); } } break; } case ']': { if (Isempty(s)) { cout << "右中括号多余!" << endl; exit(1); } else { Pop(s, e); if (e != '[') { cout << "中括号不匹配!" << endl; exit(1); } } break; } case '}': { if (Isempty(s)) { cout << "右大括号多余!" << endl; exit(1); } else { Pop(s, e); if (e != '{') { cout << "大括号不匹配!" << endl; exit(1); } } break; } } } if (Isempty(s)) { cout << "括号匹配!!!" << endl; } else { cout << "左括号多余!" << endl; }}
1 0
- 括号括号括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配/()[]
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配!!!!
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- NYOJ 323 Drainage Ditches 最大流 Dinic 算法模板
- poj2478 (欧拉函数)
- maven3.3.9配置jetty9.4嵌入式启动
- (ZT)udp发包收包的例子
- Myeclipse SVN更新与提交
- 括号匹配
- 假期跟我一起写一个点对点VPN-SimpleVPN详解
- 小程序开发系列之基础部分-基础部分
- opencv学习之Shi-Tomasi角点检测
- Material Design系列风格控件之(二)----NavigationView和DrawerLayout实现侧滑菜单栏
- Linux export的作用
- pandas的基本用法(五)——导入导出数据
- svn在线安装
- 【java】数字三角形最长路径