表达式括号匹配配对判断问题_第1页
表达式括号匹配配对判断问题_第2页
表达式括号匹配配对判断问题_第3页
表达式括号匹配配对判断问题_第4页
全文预览已结束

下载本文档

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

文档简介

1、 实验 表达式括号匹配配对判断问题 姓名: 班 级: 学号: 1,问题的描述 假设一个算法表达式中包括圆括号,方括号两种,设计判别表达式中括号是否正确匹配的算法。 2,数据结构设计 (1)匹配判别发生在右括号出现时,且被匹配的左括号应是距离右括号最近被输入的,二不是最先被输入的括号,即“先入后匹配”。因此用栈来解决。 struct Node int top; char datastacksize; ; Node node; void InitStack( ) / 初始化栈 node.top=-1; (2)一是表达式的串;二是栈。串可以采用顺序表表示。所以采用顺序栈,站元素类型为字符型。 sqs

2、tack(int n) base=newTm; if(base=NULL) cout<<“创栈失败”; exit(1); stacksize=m;top=-1; 3,算法设计 (1)进栈的算法设计 voidPush(charx) if(node.top=stacksize-1); node.top+; node.datanode.top=x; (2)出栈的算法设计 void Pop(char &x) if(node.top=-1); x=node.datanode.top-;(3)判断是否匹配的算发。如果右括号,进栈,取下个字符;如果是左括号,出栈,取下个字符;最后判断栈是

3、否为空;得出结论。31因为其中包含几种括号,所以用采用switch语句for(i=0;*(p+i)!='0'&&count!=0;i+)switch (*(p+i)case '(' :Push(*(p+i) ;break ; case '' :Push(*(p+i) ) ;break ; case ')' :Pop(e) ;if ( e!='(' )count=0 ;break ; case '' :Pop(e) ;if ( e!='' )count=0 ;break

4、 ; default:break; 32利用进出栈判断括号是否匹配if ( !StackEmpty () | count=0 ) /条件为:栈不空,而且有出现括号不匹配的情况cout<<"括号无法匹配!"<<endl;cout<<"你想要继续吗?(y/n)"<<endl;cin>>s;if(s='y'|s='Y')goto input;else if(s='n'|s='N')cout<<"退出程序!"<<endl;return 0; elsecout<<"括号能够匹配!"<<endl;cout<<"你想要继续吗?(y/n)"<<endl;cin>>s;if(s='y'|s='Y')goto input;else if(s='n'|s='N')cout<<"退出程序!"<<endl;return 0;4测试与运行 (1)显示菜单,如下图:(2

温馨提示

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

评论

0/150

提交评论