实验--表达式括号匹配配对判断问题

实验--表达式括号匹配配对判断问题

ID:23338052

大小:42.45 KB

页数:5页

时间:2018-11-06

实验--表达式括号匹配配对判断问题_第1页
实验--表达式括号匹配配对判断问题_第2页
实验--表达式括号匹配配对判断问题_第3页
实验--表达式括号匹配配对判断问题_第4页
实验--表达式括号匹配配对判断问题_第5页
资源描述:

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

1、实验表达式括号匹配配对判断问题姓名:贾柯柯班级:计162学号:1613023052实验时间:2017.10.281.问题描述一个算术表达式含圆括号、中括号、花括号,且它们可任意嵌套使用。写一程序,判断任一算术表达式中所含括号是否正确配对。2.数据结构设计匹配判别发生在右括号出现时,且被匹配的左括号应是距离右括号最近被输入的,二不是最先被输入的括号,即“先入后匹配”。因此用栈来解决。#definestacksize100//定义栈的空间大小structstack{//定义栈的结构体charstrstack[stacksize];//定义栈的存储格式为字符型

2、inttop;//定义栈的栈顶变量};voidInitStack(stack&s){//定义一个新栈s,初始化栈顶为-1s.top=-1;}3.算法设计(1)入栈的算法charPush(stack&s,chara){//入栈操作,将字符a入栈sif(s.top==stacksize-1)//当栈顶为栈的空间大小-1,栈满return0;s.top++;//入栈操作一次,栈顶+1s.strstack[s.top]=a;//此时,栈顶元素为字符areturna;}2)出栈的算法设计charPop(stack&s){//出栈操作if(s.top==-1)//当

3、栈顶为-1时,栈空return0;chara=s.strstack[s.top];//将栈顶元素赋予字符a,并返回字符a,完成出栈操作s.top--;returna;}(3)判断栈是否为空的函数intEmpty(stack&s,intre){//定义判断栈是否为空的函数if(s.top==-1)return1;//栈为空时返回值为1elsereturn0;//栈不为空时返回值为0}(4)判断是否匹配的算法。如果右括号,进栈,取下个字符;如果是左括号,出栈,取下个字符;最后判断栈是否为空。intCheck(char*str){//检验括号是否匹配的函数st

4、acks;InitStack(s);intstrn=strlen(str);//定义字符串长度为strnfor(inti=0;i

5、)return0;break;case']':if(Pop(s)!='[')return0;break;}}intre=0;//定义并初始化判空函数的返回值re=Empty(s,re);//返回判空函数的返回值if(re==1)return1;//栈为空elsereturn0;//栈不为空,有左括号,存在'('或'['或'{'未匹配}4.运行与测试①输入1+(2+3).②输入1+(2+3))③输入1+((2+3)④输入1+2+3+4⑤输入1+[2+(4-2])*25.调试记录及收获在运行程序时,当输入1+((2+3)时,因为错把’(’写成’(’,也就是输

6、入法的中英文没有切换,所以得到的结果是错的。这就说明输入时要注意中英文。通过本次实验,我对栈的使用更加熟练,入栈出栈的顺序也有了更一步的了解。

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

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

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