栈应用之括号匹配
来源:互联网 发布:js如何让下拉菜单 编辑:程序博客网 时间:2024/04/27 22:32
此代码仅为栈的简单应用,对括号匹配问题做出了描述,栈的更多用途表达式求值将在后面推出
#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERFLOW -1#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#include "stdio.h"#include "malloc.h"#include "stdlib.h"#include "string.h"typedef int status;typedef char SelemType;typedef struct{SelemType *base;SelemType *top;int stacksize;}SqStack;status InitStack(SqStack &S){S.base = (SelemType *)malloc(STACK_INIT_SIZE*sizeof(SelemType));if(!S.base) exit (OVERFLOW);S.top=S.base;S.stacksize = STACK_INIT_SIZE;return OK;}status Push(SqStack &S, SelemType e){if(S.top - S.base >= S.stacksize){S.base = (SelemType *)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SelemType));if(!S.base)exit(OVERFLOW);S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top++=e;return OK;}status Pop(SqStack &S, SelemType &e){if(S.top == S.base)return ERROR;e=*--S.top;//栈顶指针在元素后一个return OK;}status StackEmpty(SqStack S){if(S.top==S.base)return TRUE;else return FALSE;}int correct(char *exp, int max){int i, flag;char e, x;SqStack S;InitStack(S);for(i=0;i<strlen(exp); i++){x = exp[i];if(exp[i] =='('|| exp[i]=='['||exp[i] == '{')Push(S,x); if(x ==')'|| x==']'||x == '}'){if(!Pop(S,e))flag=0;else if((x ==')'&&e!='(') || (x == ']' && e != '[')|| (x == '}' && e != '{'))flag = 0;}}if(S.top!=S.base)flag = 0;return flag;}void main(){char exp[100];while(1){printf("请输入表达式,输出0退出:");gets(exp);if(strcmp(exp, "0") == 0)break;if(correct(exp, strlen(exp)) == 0)printf("内容表达式为:\n%s\n表达式括号不匹配\n", exp);elseprintf("表达式括号匹配!\n");}}
阅读全文
0 0
- 栈应用之括号匹配
- 栈应用之括号匹配
- 栈之应用---括号匹配
- 栈应用之括号匹配
- 栈的应用之括号匹配
- 数据结构栈的应用之括号匹配
- 栈的应用之括号匹配
- 数据结构之 栈的应用 括号匹配
- c栈的应用之括号匹配
- 栈的应用之括号匹配code_legend
- 栈的应用之括号匹配检验
- 栈的应用之括号匹配
- 栈和队列应用之括号匹配
- 栈的应用之括号匹配
- 栈的应用之括号匹配
- 栈的应用之括号的匹配
- 栈的应用之括号的匹配
- 栈的应用之括号匹配
- jdk和jre有什么区别
- easyui datagrid 隐藏
- [PlantSimulation]Transporter运输工具的详细用法(四)
- HDU 6102 GCDispower(莫比乌斯反演)
- 子线程的正确的开启方式
- 栈应用之括号匹配
- java运行时异常与一般异常有何异同?
- 《深入理解java虚拟机》学习-第四章-JDK的可视化工具
- HDU3364(高斯消元开关问题)(模板)
- Python3爬虫糗事百科最新可用
- MVC的工作原理
- 线段树 1(基础 单点更新)
- 云客Drupal8源码分析之插件系统(中)
- zoj 3950 how many nines