括号匹配
2014-09-25 09:56
531 查看
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10 typedef struct{ char *top; char *base; int stacksize; }sqStack; void StackInit(sqStack *s) { s->base=(char*)malloc(sizeof(char)*STACK_INIT_SIZE); if(!s->base) exit(0); s->top=s->base; s->stacksize=STACK_INIT_SIZE; } void Push(sqStack *s,char e) //push in { if(s->top-s->base>=s->stacksize) { s->base=(char*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(char)); if(!s->base) exit(0); s->top=s->base+s->stacksize; s->stacksize=s->stacksize+STACKINCREMENT; } *(s->top)=e; s->top++; } void Pop(sqStack *s,char *e)//pop out { if(s->base==s->top)return; *e=*--(s->top); } int StackLen(sqStack s) { return (s.top-s.base); } int match(char c,char e) { if((c=='['&&e==']')||(c=='{'&&e=='}')) return 0; else return 1; } void Print(sqStack s) { } void main() { sqStack s; StackInit(&s); char c; char e; scanf_s("%c",&c,1); while (c!='#') { if(!StackLen(s)) Push(&s,c); else { Pop(&s,&e); printf("----%c-----\n",e); if(!match(c,e)) { Push(&s,e); Push(&s,c); } else { printf("----match-----\n"); } } Print(s); printf("SIZE:%d\n",StackLen(s)); scanf_s("%c",&c,1); } if(!StackLen(s)) printf("YES!\n"); else printf("NO!\n"); }
相关文章推荐
- [土狗之路]coursera上C语言进阶习题 括号匹配
- 括号匹配实验3
- 校招编程题目(1) C++:括号匹配方案(京东)
- poj2955Brackets【区间dp 括号匹配】
- 数据结构 栈的应用 括号匹配
- 纯C语言:括号匹配源码
- acm 括号匹配(二)
- 第五周项目3--括号的匹配
- 栈的应用--括号匹配的检验
- 算法分析——括号匹配
- 华为机试题二括号的匹配
- 栈的运用(十进制转换八进制,括号匹配问题)
- 第五章项目三__括号的匹配
- 大括号的匹配问题
- 数据结构(三)栈结构模拟编译器判断括号是否匹配
- 使用栈进行括号匹配的判断
- 表达式括号匹配
- 一个小问题(语法分析中的括号匹配)
- Myeclipse修改括号匹配样式
- 用stack简单实现括号匹配