电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

堆栈应用括号匹配实验VIP免费

堆栈应用括号匹配实验_第1页
1/10
堆栈应用括号匹配实验_第2页
2/10
堆栈应用括号匹配实验_第3页
3/10
深圳大学实验报告课程名称:数据结构实验与课程设计实验项目名称:堆栈应用括号匹配实验学院:计算机与软件学院专业:未分指导教师:杨芳报告人:姜家祥学号:2013150387班级:08实验时间:2013-10-9实验报告提交时间:2014-10-10教务处制一、实验目的掌握堆栈的基本原理掌握堆栈的存储结构掌握堆栈的进栈、弹栈、判断栈空的实现方法掌握应用堆栈实现括号匹配的原理和实现方法二、实验要求熟悉C++语言编程熟练使用C++语言实现堆栈的进栈Push、插入Pop、判断栈空等操作熟练使用堆栈实现括号匹配算法三、实验内容本次实验有两项内容:(一)堆栈应用括号匹配1、问题描述一个算术表达式中包括圆括号、方括号和花括号三种形式的括号编程实现判别表达式中括号是否正确匹配的算法2、算法顺序扫描算术表达式若算术表达式扫描完成,此时如果栈空,则正确返回(0);如果栈未空,说明左括号多于右括号,返回(-3)从算术表达式中取出一个字符,如果是左括号(‘(‘或‘[‘或‘{‘),则让该括号进栈(PUSH)如果是右括号(‘)‘或‘]‘或‘}‘):2、如果栈为空,则说明右括号多于左括号,返回(-2)⑵、如果栈不为空,则从栈顶弹出(POP)一个括号:若括号匹配,则转1继续进行判断;否则,说明左右括号配对次序不正确,返回(-1)3、输入第一行:样本个数,假设为n。第二到n+1行,每一行是一个样本(算术表达式串),共n个测试样本。4、输入样本4{[(1+2)*3]-1}{[(1+2]*3)-1}(1+2)*3)-1}{[(1+2)*3-1]5、输出共有n行,每一行是一个测试结果,有四种结果:0:左右括号匹配正确{[(1+2)*3]-1}-1:左右括号配对次序不正确{[(1+2]*3)-1}-2:右括号多于左括号(1+2)*3)-1}-3:左括号多于右括号{[(1+2)*3-1]6、输出样本0-1-2-3(二)数制转换1、问题描述对于任意十进制数转换为k进制,包括整数部分和小数部分转换。整数部分采用除k求余法,小数部分采用乘k取整法例如x=19.125,求2进制转换整数部分19,小数部分0.12519/2=9…10.125*2=0.25…09/2=4…10.25*2=0.5…0-2-4/2=2…00.5*2=1…12/2=1…01/2=0…1所以整数部分转为10011,小数部分转为0.001,合起来为10011.001提示整数部分可用堆栈,小数部分可用队列实现注意:必须按照上述方法来实现数制转换,其他方法0分2、输入第一行输入一个t,表示下面将有t组测试数据。接下来每行包含两个参数n和k,n表示要转换的数值,可能是非整数;k表示要转换的数制,1usingnamespacestd;#include#defineMax_Size100typedefstructStack{//定义栈charbase[Max_Size];inttop;}Stack;-3-voidInitStack(Stack&S){//构造空栈S.top=0;}intPush(Stack&S,charch){//元素进栈S.top++;S.base[S.top]=ch;return1;}intPop(Stack&S,charch){//元素出栈S.top--;ch=S.base[S.top];return1;}intEmpty(Stack&s,intn){if(s.top==0){return1;}else{return0;}}intPipei(Stack&S,stringS1){//匹配inti,m=0,n=0,num=0,num1=0;charc,ch,ch1,ch2[100];InitStack(S);for(i=0;i>t;while(t--){cin>>P;-5-x=Pipei(S,P);cout<usingnamespace...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

堆栈应用括号匹配实验

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部