括号匹配检验 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(
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/77431.html