利用栈实现括号匹配算法
2013-08-17 16:36
405 查看
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<stack> using namespace std; #define OK 1 #define ERROR 0 int parent_match(char *s,int len) { stack<char> st; int e; while(*s) { switch(*s) { case '(': case '[':st.push(*s++); break; case ')': case ']':if(!st.empty()) { //一定要判断,否则下面有st.pot,如果栈空,st.pop()就会出错, //会出现deque iterator not dereferencable这种蛋疼的错误 e = st.top(); if( *s == ')' && e!='(' || *s==']' && e!='[' ) return ERROR; else { st.pop(); s++; break; } } else { printf("缺少左括号\n"); return ERROR; } default: s++; } } if(st.empty()) return OK; else return ERROR; } int main() { char *str = "5+6*((3+4))+[(2-1)*(1*3)]+[]+("; int len = strlen(str); int result = 0; result = parent_match(str,len); if(result) printf("括号匹配\n"); else printf("括号不匹配\n"); system("pause"); return 0; }
相关文章推荐
- 算法复习--------------利用堆栈实现括号匹配
- 利用STL栈实现括号匹配算法
- 利用栈实现括号匹配算法!
- C++,利用链式栈实现括号匹配,界面友好,操作方便,运行流畅
- 用链栈实现字符串表达式括号匹配算法
- 利用栈实现括号匹配检测
- 基于PHP实现栈数据结构和括号匹配算法示例
- 使用栈实现括号匹配算法-java
- 括号匹配算法的一种正确实现(java)
- 括号匹配算法求解(用栈实现)
- 利用顺序栈实现多项式的括号匹配
- 括号匹配算法的栈实现
- 括号匹配算法的C++代码实现
- 利用栈实现括号匹配算法!
- 数据结构13: 括号匹配算法及C语言实现
- 考研数据结构与算法之堆栈的使用(三)利用堆栈匹配括号
- C++,利用链式栈实现括号匹配,界面友好,操作方便,运行流畅
- java利用栈实现括号()[]匹配问题
- 指针实现的栈(包含进制转换算法实现,括号匹配算法实现)【8】
- 简单算法——使用栈实现括号匹配检验