检查一个算术表达式中的括号是否匹配
2016-05-10 15:05
507 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXSIZE 20 typedef struct{ char data[MAXSIZE]; int top; }SeqStack; SeqStack * initSeqStack(){ SeqStack * s = (SeqStack *)malloc(sizeof(SeqStack)); s->top = -1; return s; } void pushSeqStack(SeqStack * s,char x){ if(s->top == MAXSIZE-1){ printf("the stack is full!\n"); }else{ s->top++; s->data[s->top] = x; } } char getSeqStack(SeqStack * s){ char x; if(s->top == -1){ printf("the stack is empty!\n"); return '-1'; }else{ x = s->data[s->top]; return x; } } void popSeqStack(SeqStack * s){ char x; if(s->top == -1){ printf("the stack is empty!\n"); }else{ x = s->data[s->top]; s->top--; } } void print(SeqStack * s){ for(int i=0;i<=s->top;i++){ printf("%3c",s->data[i]); } printf("\n"); } void correct(char array[]){ SeqStack * s; s = initSeqStack(); char x; int i=0; while(array[i] != '\0'){ if(array[i] == '(' || array[i] == '[' || array[i] == '{'){ pushSeqStack(s,array[i]); i++; }else if(array[i] == ')' || array[i] == ']' || array[i] == '}'){ x = getSeqStack(s); if(array[i] == ')' && x == '('){ popSeqStack(s); i++; }else if(array[i] == ']' && x == '['){ popSeqStack(s); i++; }else if(array[i] == '}' && x == '{'){ popSeqStack(s); i++; }else{ break; } }else{ i++; } } if(s->top != -1){ printf("error!\n"); }else{ printf("right!\n"); } } int main(){ char array[20]; printf("please input the string!\n"); gets(array); correct(array); return 0; }
相关文章推荐
- ios客户端学习-iOS使用png,jpg的区别
- PHP开发入门2---->PHP扩展开发入门2 HELLO WORLD
- bzoj 3120: Line
- PullToRefresh原理解析
- iOS swift学习之入门详解(函数)
- 局域网服务器的外网访问设置
- 使用 Spring Boot 快速构建 Spring 框架应用---学习笔记
- Android网络编程(1)
- 单链表的插入
- java中实现定时功能
- 查看centos版本
- 双连通分量
- Qt无边框窗口的“关闭”和“移动”
- c++中new和delete的用法
- ArcGIS教程:创建饼图
- okhttp设置超时时间
- C# 程序员最常犯的 10 个错误
- 大牛链接
- 绘制基本图形
- Java 序列化Serializable详解