数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
来源:互联网 发布:淘宝卖童装怎么样 编辑:程序博客网 时间:2024/05/01 14:22
括号匹配的算法思想:
初始化一个空栈,扫描表达式,依次读入字符,知道扫描完或者出现错误匹配。对于读入的每个字符,分以下情况处理:
(1)、如果是‘’(“”或“【”,将其压入栈。
(2)、如果是“)”,则根据当前栈顶元素的值分情况考虑。若栈顶元素是“(”,则匹配成功,否则为非法情况。
(3)、如果是“】”,则根据当前栈顶元素的值分情况考虑。若栈顶元素是“【”,则匹配成功,否则为非法情况。
——————————C代码——————VC++6.0编译成功,成功运行—————————————————
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef int Status;typedef char SElemType;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -1#define STACK_INNT_SIZE 100//存储空间初始分配量 #define STACKINCREMENT 10//存储空间分配增量typedef struct{SElemType *base;SElemType *top;int stacksize;}SqStack;Status InitStack(SqStack &S){S.base= (SElemType *) malloc(STACK_INNT_SIZE * sizeof(SElemType) ) ; if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INNT_SIZE;return OK;}Status DestoryStack(SqStack &S){free(S.base);S.base=S.top=NULL;return OK;}Status ClearStack(SqStack &S){S.top=S.base;return OK;}Status StackEmpty(SqStack S){if(S.top==S.base)return TRUE;return FALSE;}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==NULL){printf("malloc failed.\n");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 GetTop(SqStack S,SElemType &e){if(S.top==S.base)return ERROR;e=*(S.top-1);return OK;}void Matching(){ SqStack S; SElemType ch[80],*p,e; InitStack(S); printf("请输入表达式:\n"); gets(ch); p=ch; while(*p) { switch(*p){ case '(': case '[': Push(S,*p++); break; case ')': case ']': if(!StackEmpty(S)) { Pop(S,e); if(*p==')'&& e!='('||*p=='['&& e!=']') { printf("左右括号不配对\n"); return; } else { p++; break; } } else { printf("缺少左括号\n"); return; } default:p++; } } if(StackEmpty(S)) printf("括号匹配.\n"); else printf("缺少右括号.\n");}int main(){Matching(); system("pause");return 0;}
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- 数据结构之---C语言实现括号匹配(栈实现)
- 数据结构(C语言)读书笔记5:栈的应用之数制转换及C语言代码实现
- 括号匹配问题 栈的应用 C语言实现
- c语言栈的应用之括号匹配问题
- 【数据结构】栈的应用--括号的匹配(c++)
- c栈的应用之括号匹配
- 括号的匹配(c语言数据结构)
- c语言:括号匹配检测(栈的应用)
- 数据结构-C语言 栈的简单应用——括号匹配
- (C++)数据结构之括号匹配的问题?
- 数据结构栈的应用之括号匹配
- 数据结构之 栈的应用 括号匹配
- 数据结构之串的模式匹配(C语言实现)
- c语言实现括号匹配 栈的思想
- C语言实现顺序栈的括号匹配
- 数据结构题典021:栈的应用——括号匹配的检验(C++)
- 数据结构(C语言)---括号匹配
- [转]图片垂直居中
- 经典:从追MM谈Java的23种设计模式
- canvas标签应用 简单"贪吃蛇"游戏
- C语言 不用循环,输出1到1000
- 新建链表(前插法后插法)
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- map 键值
- 在win7(32bit和64bit) visual studio 2010(vs2010)下安装opencv2.3
- android 全志a10(2.3.4)开发二(linux内核编译及源码编译)
- pngcrush caught libpng error: Not enough image data
- java获取本机的ip地址
- 安装Sublime Text 2插件的方法:
- ARM处理器的一些基本常识
- PHP截取字符串---汉字算2个字符并且防止截出乱码