括号配对算法
来源:互联网 发布:java web项目规范 编辑:程序博客网 时间:2024/05/18 00:10
#include <stdio.h>#include <malloc.h> //malloc,realloc#include <math.h> //含有overflow#include <process.h> //exit()#define S_SIZE 100 //栈的空间大小#define STACKINCREAMENT 10//增加空间struct SqStack{int *base; //栈底int *top; //栈顶int stacksize; //栈当前的存储空间};void main(){ //子函数声明 void InitStack(SqStack &S);//初始化空栈 int StackEmpty(SqStack S);//判空 void push(SqStack &S, int e);//进栈 void pop(SqStack &S, int &e);//出栈 //主函数开始 SqStack s;//初始化空栈 InitStack(s); char ch[100], *p; int e; p = ch; printf("输一个含义有()[]{}的括号表达式:\n"); gets(ch); while (*p) { switch (*p) { case '{': case '[': case '(': push(s, *p++); break; //只要是左括号就入栈 case '}': case ']': case ')': if (!StackEmpty(s)) { pop(s, e); if ((e == '{' && *p == '}') || (e == '[' && *p == ']') || (e == '(' && *p == ')')) p++; else { printf("括号不匹配!"); return; } } else { printf("括号不匹配!多了一个%c括号", *p); system("pause"); return; } break; default:p++;//其他字符就后移 } } printf("括号匹配成功"); printf("\n"); system("pause");}void InitStack(SqStack &S){S.base=(int *)malloc(S_SIZE*sizeof(int));S.stacksize=S_SIZE;S.top=S.base;//初始化空栈}int StackEmpty(SqStack S){if(S.base==S.top)return 1;elsereturn 0;}void push(SqStack &S,int e){//进栈if(S.top-S.base>=S.stacksize){S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREAMENT)*sizeof(int));S.top=S.base+S.stacksize;S.stacksize+=STACKINCREAMENT;}*(S.top)=e;S.top++; }void pop(SqStack &S,int &e){//出栈if(S.base!=S.top){S.top--;e=*S.top;}}
0 0
- 括号配对算法
- 括号配对算法
- 每日算法练习之括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- 括号配对
- Error:(2, 0) No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices. <
- Windows加载DLL
- java-内省技术解析
- 【Android实战之旅 003】Android UI模板设计
- 从0开始学习 GitHub 系列之「向GitHub 提交代码」
- 括号配对算法
- 第九章:菱形
- 从0开始学习Git系列之「Git简介」
- js单选按钮动画特效
- c++获取注册表中程序的安装路径
- 从0开始学习Git系列之「Git初阶」
- POJ 1722 SUBTRACT 背包
- AngularJs ng-repeat 必须注意的性能问题 - 灰机_不会飞
- <转>SFTP 和FTPS的区别是什么?