括号匹配问题

括号匹配问题

ID:46444113

大小:42.48 KB

页数:5页

时间:2019-11-23

括号匹配问题_第1页
括号匹配问题_第2页
括号匹配问题_第3页
括号匹配问题_第4页
括号匹配问题_第5页
资源描述:

《括号匹配问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告括号匹配问题、一、实验目的:1、熟练掌握数据结构基本知识;2、通过括号匹配的实验,了解栈的表示和栈的基本操作,掌握栈“后进先出”的特性并能够应用这一特性。二、实验工具:C-Free三、实验内容:设表达式中包含三种括号:圆括号、方括号和花括号,它们可互相嵌套,如([{}])或({([][()])})等均为正确格式,而({[])、{[()]或([]}等均不正确。在算法中可设置一个栈,每读入一个括号,若是左括号,则直接入栈,等待相匹配的同类右括号;若读入的是右括号,且与当前栈顶的左括号同类型,则二者匹配将栈顶的左括号出栈,否则属于不合法情况。另外,如果输入序列已读完,而栈

2、中仍有等待匹配的左括号,或者读入了一个右括号,而栈中已无等待匹配的同类型的左括号,均属不合法情况。当输入序列和栈同时为空时,说明所有括号完全匹配。四、实验过程:#include#include#defineSTACKINCREAMENT10#defineSTACK_INIT_SIZE100#defineOVERFLOW-2#defineOK1#defineERROR0typedefintstatus;typedefcharSElemtype;typedefstruct{SElemtype*base;SElemtype*top;statu

3、sstacksize;}sqstack;statusInit(sqstack*s){s->base=(SElemtype*)malloc(STACK_INIT_SIZE*sizeof(SElemtype));if(!s->base)exit(OVERFLOW);s->top=s->base;s->stacksize=STACK_INIT_SIZE;returnOK;}statuspush(sqstack*s,SElemtypee){if(s->top-s->base>=s->stacksize){s->base=(SElemtype*)realloc(s->base,(s-

4、>stacksize+STACKINCREAMENT)*sizeof(SElemtype))if(!s->base)exit(OVERFLOW);s->top=s->base+s->stacksize;s->stacksize+=STACKINCREAMENT;}*s->top++=e;returnOK;}statuspop(sqstack*s,SElemtype*e){if(s->top==s->base)returnERROR;*e=*--s->top;returnOK;}statusstackempty(sqstack*s){if(s->top==s->base)re

5、turnOK;returnERROR;}statusParenthesis_match(sqstack*s,char*str){inti=0,flag=0;SElemtypee;while(str[i]!=''){switch(str[i]){case'(':push(s,str[i]);break;case'[':push(s,str[i]);break;case')':{pop(s,&e);if(e!='(')flag=1;}break;case']':{pop(s,&e);if(e!='[')flag=1;}break;default:break;}if(flag

6、)break;i++;}if(!flag&&stackempty(s))printf("括号匹配成功!");elseprintf("括号匹配失败!");returnOK;}intmain(){charstr[100],enter;sqstacks;Init(&s);printf("请输入字符串:");scanf("%s",str);scanf("%c",&enter);Parenthesis_match(&s,str);return0;}实验结果:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。