括号匹配检验_第1页
括号匹配检验_第2页
括号匹配检验_第3页
括号匹配检验_第4页
括号匹配检验_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即()或()等为正确的格式,(或()或()均为不正确的格式。输入一个包含上述括号的表达式,检验括号是否配对。Input第一行:输入一个包含圆括号或方括号、不超过80个字符的表达式串。Output第一行:若输入表达式括号匹配,输出matching;若不匹配,输出具体信息:isntmatchedpairs,或lackofleftparenthesis或lackofrightparenthesistypedefcharSElemType;#includemalloc.h#includ

2、estdio.h#includemath.h#includeprocess.h/exit()#defineOK1#defineERROR0#defineTRUE1#defineFALSE0typedefintStatus;/Status是函数的类型,其值是函数结果状态代码,如OK等#defineSTACK_INIT_SIZE10/存储空间初始分配量#defineSTACKINCREMENT2/存储空间分配增量structSqStackSElemType*base;/在栈构造之前和销毁之后,base的值为NULLSElemType*top;/栈顶指针intstacksize;/当前已分配的存储空

3、间,以元素为单位;/顺序栈StatusInitStack(SqStack&S)S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType);S.top=S.base;if(!S.base)returnERROR;S.stacksize=STACK_INIT_SIZE;returnOK;StatusStackEmpty(SqStackS)if(S.base=S.top)returnTRUE;elsereturnFALSE;StatusPush(SqStack&S,SElemTypee)if(S.top-S.base=S.stacksize

4、)S.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+S.stacksize)*sizeof(SElemType);if(!S.base)returnERROR;S.top=S.base+S.stacksize;S.stacksize=S.stacksize+STACK_INIT_SIZE;*S.top=e;S.top+;returnOK;StatusPop(SqStack&S,SElemType&e)if(S.base=S.top)returnERROR;e=*-S.top;returnOK;voidcheck()/对于输入的任意一个字符串,

5、检验括号是否配对SqStacks;SElemTypech80,*p,e;if(InitStack(s)/初始化栈成功/printf(”请输入表达式n);scanf(%s,ch);p=ch;while(*p)/没到串尾switch(*p)case(:case:Push(s,*p);p+;break;/左括号入栈,且p+case):case:if(!StackEmpty(s)/栈不空Pop(s,e);/弹出栈顶元素if(*p=)&e!=(|*p=&e!=)/弹出的栈顶元素与*卩不配对printf(isntmatchedpairsn);exit(ERROR);elsep+;break;/跳出switch语句else/栈空printf(lackofleftparenthesisn);exit(ERROR);default:p+;/其它字符不处理,指针向后移if(StackEmpty(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论