首页 栈,括号匹配c语言

栈,括号匹配c语言

举报
开通vip

栈,括号匹配c语言栈,括号匹配c语言 #include "stdio.h" #include"stdlib.h" #include "malloc.h" #define OK 1 #define OVERFLOW -1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char ElemType; typedef int Status; typedef struct //构造 { ElemType *base;...

栈,括号匹配c语言
栈,括号匹配c语言 #include "stdio.h" #include"stdlib.h" #include "malloc.h" #define OK 1 #define OVERFLOW -1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char ElemType; typedef int Status; typedef struct //构造 { ElemType *base; ElemType *top; int stacksize; }SqStack; // 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 声明部分 Status InitStack(SqStack &S); //创建 Status EmpyStack(SqStack S); //检查栈是否为空 Status Push(SqStack &S,ElemType e); //入栈 Status Pop(SqStack &S,ElemType &e); //出栈 Status GetTop(SqStack S,ElemType &e); //返回栈顶元素 Status StackLength(SqStack S); //计算栈的长度 void Brackets(); //括号匹配 Status Putin(SqStack &S); //输入 Status Print(SqStack &S); //输出 //函数 Status InitStack(SqStack &S) //创建 { S.base=(ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); if(!S.base) exit(OVERFLOW); //存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; //存储分配成功 } Status EmpyStack(SqStack S) //检查栈是否为空 { if(S.base==S.top) return 1; else return 0; } Status Push(SqStack &S,ElemType e) //入栈 { if(S.top-S.base>=S.stacksize) { S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT) * sizeof(ElemType)); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; } Status Pop(SqStack &S,ElemType &e) //出栈 { if(EmpyStack(S)) return ERROR; --S.top; e=*S.top; return OK; } Status GetTop(SqStack S,ElemType &e) //返回栈顶元素 { if(EmpyStack(S)) return ERROR; e=*(S.top-1); printf("\n栈顶元素是:%c",e); return OK; } Status Putin(SqStack &S) //输入 { char *q; char ch[100]; q=ch; printf("\n按顺序输入元素:"); gets(ch); int i=0; while(*q) { Push(S,*q++); } } int StackLength(SqStack S) //计算长度 { if(EmpyStack(S)) return ERROR; else return (S.top-S.base); } void Brackets() //括号匹配 { SqStack M; //初始化空栈 InitStack(M); getchar(); char ch[100]; for(int i=0;i<100;i++) ch[i]='\0'; char *p; char e; p=ch; printf("\n输一个含括号的 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式:\n"); gets(ch); while(*p) { switch (*p) { case '{': case '[': case '(': Push(M,*p++); break; //只要是左括号就入栈 case '}': case ']': case ')': Pop(M,e); if ((e=='{' && *p=='}') ||(e=='[' && *p==']') || (e=='(' && *p==')')) p++; else { printf("括号不匹配!"); exit(OVERFLOW); } break; default : p++; } } if (EmpyStack(M)) printf("括号匹配成功"); else printf("缺少右括号~"); printf("\n"); } Status Print(SqStack &S) //输出 { SqStack Q; InitStack(Q); ElemType x; printf("\n此栈为:"); while(S.top!=S.base) { Pop(S,x); printf("%c ",x); Push(Q,x); } while(!EmpyStack(Q)) { Pop(Q,x); Push(S,x); } return OK; } int main() { char e; SqStack S; InitStack(S); printf("创建一个栈\n"); Putin(S); Print(S); GetTop(S,e); printf("\n括号匹配检验\n"); Brackets(); getchar(); return 0; }
本文档为【栈,括号匹配c语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_562397
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:
上传时间:2018-03-22
浏览量:18