栈 括号匹配程序
来源:互联网 发布:excle导入进sql 编辑:程序博客网 时间:2024/04/29 07:12
typedef char SElemType;#include"malloc.h"#include"stdio.h"#include"math.h"#include"stdlib.h" // exit()#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等#define STACK_INIT_SIZE 10 // 存储空间初始分配量#define STACKINCREMENT 2 // 存储空间分配增量//--前期准备-------------------------------struct SqStack{ SElemType *base; SElemType *top; int stacksize; }; // 顺序栈Status InitStack(SqStack &S){ S.base=(SElemType * )malloc(STACK_INIT_SIZE*sizeof(SElemtype)); if (!S.base) return (ERROR); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; }//栈的创建Status StackEmpty(SqStack S){ if (S.top==S.base) return OK; else return ERROR; }//判断是否空栈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) return ERROR; 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; S.top--; e=*S.top; return OK; }//出栈void check() { // 对于输入的任意一个字符串,检验括号是否配对 SqStack s; SElemType ch[80],*p,e; if(InitStack(s)) // 初始化栈成功 { //printf("请输入表达式\n"); gets(ch); p=ch; while(*p) // 没到串尾 switch(*p) { case '(': case '[':Push(s,*p++); break; // 左括号入栈,且p++ case ')': case ']':if(!StackEmpty(s)) // 栈不空 { Pop(s,e); // 弹出栈顶元素 if((*p==')'&&e!='(')||(*p==']'&&e!='[')) // 弹出的栈顶元素与*p不配对 { printf("isn't matched pairs\n"); exit(ERROR); } else { if ((*p==')'&&e=='(')||(*p==']'&&e=='[')) p++; break; // 跳出switch语句 } } else // 栈空 { printf("lack of left parenthesis\n"); exit(ERROR); } default: p++; // 其它字符不处理,指针向后移 } if(StackEmpty(s)) // 字符串结束时栈空 printf("matching\n"); else printf("lack of right parenthesis\n"); } }int main() { check(); }
0 0
- 栈 括号匹配程序
- 基于栈的括号匹配程序
- 括号匹配程序
- C++括号匹配程序
- 括号匹配程序
- 数据结构-括号匹配程序
- 判断括号匹配程序
- 括号匹配的检验程序
- Java程序练习-括号匹配
- java的括号匹配程序
- C程序括号匹配检查
- 一个动态的栈实现的括号匹配程序
- 栈的顺序实现以及括号匹配判断程序
- 栈的应用实例--c程序括号的匹配
- 5.基于顺序栈 实现 检测括号匹配程序
- 栈---括号匹配
- 括号匹配(栈)
- [栈] 括号匹配问题
- android中touch事件分发机制
- Android快速开发系列 10个常用工具类
- Leaflet.js+d3
- HDU 2016数据的交换输出
- HDU 2586 How far away ?【LCA】
- 栈 括号匹配程序
- 算法初级_1:字符
- 零碎笔记——Git的简易使用
- 10.related product , up-sell product and cross-sells
- 242. Valid Anagram
- TimerWork
- KVC 与 KVO详解
- 4 C语言程序初体验 实践项目
- 关于gitlab、github的使用