首页 数据结构表达式求值实验报告

数据结构表达式求值实验报告

举报
开通vip

数据结构表达式求值实验报告实验报告课程名:数据结构(C语言版)实验名:表达式求值班级:学号:时间:2014.10.25一实验目的与要求了解栈的应用利用栈进行算术表达式求值二实验内容以字符串的形式给出一个算术表达式,计算出该算术表达式的值表达式中可能出现””””,”三实验结果与分析分析:r:读入字符t:栈顶字符r()#低优先运算符咼优先运算符(入栈出栈错误入栈入栈)错误错误错误错误错误t#入栈错误结束入栈入栈低优先运算符入栈出栈+运算出栈+计算出栈+计算入栈高优先运算符入栈出栈+运算...

数据结构表达式求值实验报告
实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 课程名:数据结构(C语言版)实验名: 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式求值班级:学号:时间:2014.10.25一实验目的与要求了解栈的应用利用栈进行算术表达式求值二实验内容以字符串的形式给出一个算术表达式,计算出该算术表达式的值表达式中可能出现””””,”三实验结果与 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 分析:r:读入字符t:栈顶字符r()#低优先运算符咼优先运算符(入栈出栈错误入栈入栈)错误错误错误错误错误t#入栈错误结束入栈入栈低优先运算符入栈出栈+运算出栈+计算出栈+计算入栈高优先运算符入栈出栈+运算出栈+计算出栈+计算出栈+计1,入栈2,错误出栈出栈+计算结束()#低优先运算符咼优先运算符(13211)22222#12511低优先运算符14441高优先运算符14444此实验可用两个栈和数组来实现,一个操作栈,一个数字栈,两个栈的字符进行优先权比较可得到5种结果。首先置操作栈为空栈,表达式起始符#”作为数字栈的栈底元素,依次读入表达式的每个字符,若是操作字符进操作栈,若是数字进数字栈,操作栈和数字栈的栈顶元素比较优先权后进行相应操作,直至结束,最后输出值即可。实验程序:#include#include#includevstring.h>intchange(charc)〃字符转换{intj=-1;switch(c){case'(':j=O;break;case')':j=1;break;case#:j=2;break;case'+':j=3;break;case'-':j=3;break;case'*':j=4;break;case7':j=4;break;}return(j);}数字计算转换intcompu(intx,inty,charc)//intj=-1;switch(c){case'+':j=x+y;break;case'-':j=x-y;break;case'*':j=x*y;break;case7':j=x/y;break;}return(j);}voidget(chara[],intnum_op,intmethod[5][5]){inta_length=strlen(a)+1;〃表达式的长度intp=0,num_p=0,op_p=0;int*num_s=(int*)malloc((a_length)*sizeof(int));//char*op_s=(char*)malloc((a_length)*sizeof(int));//op_s[op_p]=#;op_p++;//进字符栈intk=-1;//输出结果判断intox,oy;while(1)charc=a[p];〃将表达式中的字符一个一个赋值给cif(c>='0'&&c<='9')〃判断是不是数字{num_s[num_p]=c-48;〃将Ascii码转换成对应数字num_p++;〃进数字栈p++;〃代表表达式的位置开始为0指向第一位}else{intt=method[change(op_s[op_p-1])][change(c)];//作的一种传给tswitch(t){case1:op_s[op_p]=c;op_p++;p++;break;case2:k=0;break;case3:op_p--;p++;break;case4:ox=num_s[num_p-2];oy=num_s[num_p-1];num_p=num_p-2;将5种操将计算的值num_s[num_p]=compu(ox,oy,op_s[op_p-1]);〃存入num_s[]num_p++;〃入数字栈op_p--;break;case5:k=1;break;}}if(k>=0)〃跳出循环{break;}}switch(k)//0错误,1输出结果{case0:printf("表达式错误!");break;case1:printf("%s=%d\n",a,num_s[num_p-1]);break;}}intmain(intargc,char*argv[]){chara[20];puts("请输入个位数的表达式:");gets(a);intnum_op=5;〃表示操作的种数intmethod[5][5]={{1,3,2,1,1},{222,2,2},{125,1,1},{1,4,4,4,1},{1,4,4,4,4}};//1表示入栈,2表示错误,〃3表示出栈,4表示出栈+计算,//5表示结束get(a,num_op,method);return0;}TC:\Users\AdministratorXDesktop'JSEl结旳---\Debug\^达弍求直启xe"请输入个位数的表达式:2*2+2/l-2*2tt2*2+2/l-2*2ft=-2图1•表达式求值运行结果
本文档为【数据结构表达式求值实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
guoliang
暂无简介~
格式:doc
大小:12KB
软件:Word
页数:8
分类:
上传时间:2022-01-27
浏览量:0