括号匹配
2014-04-13 15:58
239 查看
#include <stdio.h> #include <stdlib.h> #define MAX 100 #define ADD 10 typedef struct { char *top; char *base; int stacksize; }Stack; void CreatStack(Stack *S) { S->base=(char *)malloc(MAX*sizeof(char)); if(!S) { printf("申请失败\n"); } else { S->top=S->base; S->stacksize=MAX; } } void Push(Stack *S, char ch) { char *newbase; if(S->top-S->base>=S->stacksize) { newbase=(char*)realloc(S->base, (S->stacksize+ADD)*sizeof(char)); if(!newbase) { printf("申请失败\n"); } else { S->top=S->base+S->stacksize; S->stacksize+=ADD; } } *(S->top++)=ch; } char Pop(Stack *S) { return *(S->top-1); } void Delete(Stack *S) { S->top--; } int cmp(Stack *S) { char ch; int tag=1; scanf("%c", &ch); while(ch!='#'&&tag) { switch(ch) { case '(': case '[': case '{': Push(S,ch); break; case ')': if(Pop(S)=='(') { Delete(S); break; } else { tag=0; break; } case ']': if(Pop(S)=='[') { Delete(S);break; } else { tag=0; break; } case '}': if(Pop(S)=='{') { Delete(S); break; } else { tag=0; break; } } scanf("%c", &ch); } return tag; } void main() { int tag; Stack S; CreatStack(&S); printf("括号匹配,以#结束\n"); tag=cmp(&S); if(tag) { printf("匹配成功\n"); } else { printf("匹配失败\n"); } }
学完数据结构的括号匹配,发上源代码,请大家多多指教啊
相关文章推荐
- 洛谷 P1739 表达式括号匹配
- 数据结构 栈应用(括号匹配检测)
- myeclipse中设置括号匹配颜色
- 看数据结构写代码(11)栈的应用(二) 括号匹配的检查
- c# '{' '}' 括号匹配
- 数据结构实验之栈与队列四:括号匹配
- C/C++数据结构通过顺序栈实现括号()匹配算法
- 栈解决括号匹配
- 【九度】题目1153:括号匹配问题
- 正则表达式的括号与贪婪匹配
- 第五周项目3-括号的匹配问题
- srm 301 div2 1000 (经典dp, 括号匹配)
- 利用栈实现括号匹配检测
- 递归应用之括号匹配检验
- 卡特兰数及括号正确匹配个数问题解释
- 第五周项目三—括号的匹配
- 第五周 项目3 - 括号的匹配
- 数据结构实验之栈四:括号匹配
- 字符串括号匹配
- 用栈来实现 括号匹配