资源描述:
《括号匹配实验报告书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.实验题目 括号匹配的检验;2.需求分析 本演示程序用VC++6.0编写,完成圆括号、方括号和大括号,其嵌套的顺序随意,即(()[])或{([][])}等为正确格式,[[)]或((()均为不正确的格式。①输入形式:直接输入一串括号;②输出形式:直接输出输入的括号串是否匹配的结果;③程序所能达到的功能:可以多次输入括号串并判断其是否匹配;④测试数据:输入([]()),结果“匹配”输入[([)],结果“此串括号匹配不合法”3.概要设计 1)为了实现上述程序功能,需要定义栈的抽象数据类型: classStack{ 数据对象:kh={ai
2、
3、ai∈count,i=0,1,2,…,n,n≥0} 数据关系: 基本操作: push(charb) 操作结果:把一个数据压进栈 pop() 操作结果:把一个数据弹出栈 pp(charc[]) 初始条件:栈已存在 操作结果:将栈中的元素进行匹配 jc() 初始条件:栈已存在 操作结果:检查栈是否为空 若空,返回0;若不空,返回1. clear() 操作结果:清空栈 2)本程序包含7个函数: ①主函数main() ②栈的构造函数Stack() ③压栈操作函数push(charb) ④弹栈操作函数pop(
4、) ⑤匹配元素函数pp(charc[]) ⑥检查栈操作函数jc() ⑦清空栈操作函数clear()5各函数间关系如下:mainStackpushpopppjcclear4.详细设计#include#includeusingnamespacestd;constintmaxstack=100;//-------------------------------------------------------------------classStack{//栈类public:Stack(){count=-1;
5、};//初始化计数conutvoidpush(charb);//压栈charpop();//弹栈voidpp(charc[]);//匹配括号intjc();//检查是否为空栈voidclear(){count=-1;}private:intcount;//计数chara[maxstack];//存储};voidStack::push(charb)//压栈函数{if(count>=maxstack);else{count++;a[count]=b;}}charStack::pop()//弹栈函数{if(count<0);else{returna
6、[count--];}return0;}intStack::jc()//检查函数{if(count<0)return0;return1;}voidStack::pp(charc[])//匹配函数5{inti=0,s=1,t;t=strlen(c);//测试输入的字符串长度if(c[0]==')'
7、
8、c[0]==']'
9、
10、c[0]=='}'
11、
12、t%2==1)//判断是否为奇个括号或第一个为左括号{cout<<"此串括号匹配不合法"<<""<