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

下载本文档

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

文档简介

1、实验报告 专业 月姓名_*_ 学号*电话*一:实验题目编写括号匹配算法。二:需求分析本演示程序用TC 编写,完成对输入括号进行匹配检验。 输入的形式和输入值的范围:输入一串含有括号的字符。输入的类型为字符型。 输出的形式:如果是匹配的字符串就返回,这是匹配的,否者返回这不是匹配的。 程序所能达到的功能:判断一串字符是否为匹配的。 测试1)、输入78+55(66-98)*4,输出结果为“这是匹配的括号”;2)、输入),输出结果为“这不是匹配的括号”;三:概要设计1) 为了实现上述程序功能,需要定义栈的抽象数据类型typedef char DataType;typedef structDataTy

2、pe datamaxsize;int top;SqeStack;2)一个主函数包含匹配函数;Main();四:详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。匹配算法:Math()s=SqeStackInitstack(); i=0;while(i<j&&tag=1)if(ai='('|ai=''|ai='') /扫描数组ai,如果是、(就入栈, SqeStackPush(&s,ai);if(ai=')')if(s.datas.top='(') s.top-; /扫

3、描数组ai如果是)就取栈顶,看是否匹配,匹else tag=0; 配就继续,否则退出循环tag=0; if(ai='')if(s.datas.top='') s.top-;else tag=0;if (ai='')if(s.datas.top='') s.top-;else tag=0;i+;if(s.top>0) /判断s.top>0时,说明不匹配 tag=0;SqeStackPrint(s) ;printf("n");if(tag=0)printf("这不是匹配的括号字符串"

4、);else printf("这是匹配的括号字符串");printf("n");五:程序代码#include "stdio.h"#define maxsize 100#define N 100typedef char DataType;typedef structDataType datamaxsize;int top;SqeStack;SqeStack SqeStackInitstack() SqeStack s;s.top=0;return s;void SqeStackPush(SqeStack *s ,char x)s->

5、;top+;s->datas->top=x;char SqeStackPop(SqeStack s)char temp;temp=s.datas.top;s.top-;return temp;void SqeStackPrint(SqeStack s) while (s.top!=0)printf("%4c",s.datas.top-); main() SqeStack s;int i,j,t;int tag=1;char c,temp;char aN;j=0;printf("请输入带括号的字符串:n"); c=getchar();while

6、(c!='$')aj+=c;c=getchar();printf("这个数组的长度是%d",j);printf("n");s=SqeStackInitstack(); i=0;while(i<j&&tag=1)if(ai='('|ai=''|ai='') SqeStackPush(&s,ai); if(ai=')')if(s.datas.top='(') s.top-;else tag=0;if(ai='')if(

7、s.datas.top='') s.top-; else tag=0;if (ai='')if(s.datas.top='') s.top-; else tag=0;i+;if(s.top>0)tag=0;SqeStackPrint(s) ;printf("n");if(tag=0)printf("这不是匹配的括号字符串"); else printf("这是匹配的括号字符串"); printf("n");六:程序测试输入一段带括号的字符,判断是否匹配。1、输入匹配括号-78+55(66-98)*4运行截图:2、输入运行截图:七心得体会和遇到的问题这次编程,首先我觉得是对我C语言知识的进一步提高和巩固,在编程中遇到了很多的问题,比如在编写建栈的函数时,总是不能按照我输进去的数据生成栈,最后,仔细是检查代码,发现程序中建立链栈的四步中有一部的指针搞颠倒了,害得我忙了好久;还有些问题是向室友求教最后搞定的,比如,在编写菜单时,总不知道参数是怎样传递的问题,自己的程序就不知道怎么去进行了,最后实在是没有办法,问了下米昂同学,然后才恍然大悟。结果很快就把代码写好了。其实,程序一定要自己坚持做,遇到问题时不能怕,要敢于面对问

温馨提示

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

评论

0/150

提交评论