数据结构实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
标题四川大学计算机学院学生实验报告内容实验号题目带括号的算术表达式求值指导教师孙界平学号0743111310班级软件学院07级8班日期20081219一实验号题目带括号的算术表达式求值二实验目的和要求使用算符优先数算法,能正确求值表达式熟练掌握栈的应用熟悉计算机系统的基本操作方法,了解如何编辑编译链接和运行一个C程序上机调试程序,掌握查错排错使

四川大学计算机学院学生实验报告

实验号题目:带括号的算术表达式求值

指导教师:孙界平姓名:杨菡蕊

学号:0743111310

班级:软件学院07级8班日期:2008.12.19

一、实验号题目:带括号的算术表达式求值

二、实验的目的和要求:

采用算符优先数算法,能正确求值表达式;

熟练掌握栈的应用;

熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个C++程序;

上机调试程序,掌握查错、排错使程序能正确运行。

三、实验的环境:

1.硬件环境:电脑型号:BenQJoybookR55V

处理器:Intel(R)Core(TM)DuoCPU T2350@1.86GHZ2.软件环环境:,windowsXP编译系统的版本的特点,VisualC++6.0。

四、算法描述:

1.将optr栈和opnd栈清空,在optr栈中加入’=’.

2从输入流获取字符ch,循环执行一下3个步骤直到求出表达式的值。

3.当OPND栈的栈顶元素和ch都等于’=’时,整个表达式求值完毕,此时opnd栈的栈顶元素即为表达式的值.

4ch是否操作符

⑴否

把ch放回输入流,读操作数operand,并把operand放入栈opnd中,再读入下一个字符ch.

⑵是

按以下方式处理:

①若ch是单目运算符,则在ch前面加上操作数0,即把0入opnd栈.

②若栈顶元素 ┌小于ch——ch入栈

└大于或等于ch——从opnd栈中弹出的left,right和栈顶运算符参与运算,并将结果压栈.

③若ch=‘(’或optrTOP优先级比ch低,则ch入栈,取下一个字符ch.

④若ch=‘)’,optr_top=‘(’,则从opnd栈中退出栈顶的‘(’,去括号,然后从输入流中读入字符并送入ch.

⑤若optr的栈顶元素optrTOP与ch不匹配或出现非法字符,则出现报错信息.五、源程序清单:

Calculator.h

templateclassData_elementclassCalculator{

public:

voidRun(); //执行表达式

private:

StackData_elementopnd; //操作数栈

Stackcharoptr; //操作符栈

intisp(charop); //栈内优先数

inticp(charop); //栈外优先数

boolGet2Operands(doublex,doubley); //从栈中取出两个操作数boolDoOperator(charop); //形成运算指令,进行运算

voidGetChar(charch); //从输入流获取一字符ch,并跳过空格及回

boolIsOperator(charch); //判断ch是否为操作符

};

templateclassData_element

voidCalculatorData_element::Run()

{

opnd.clear();optr.clear();

charch,optr_top,prior_char,op;doubleoperand;optr.push(=);

prior_char==; //prior_char表示输入的前一个字符,如为数,则令其值为0

GetChar(ch);optr.top(optr_top);

if(optr.top(optr_top)==underflow)

{

cout表达式有错!endl;return;

};

while(optr_top!==||ch!==)

{

if(isdigit(ch)||ch==.)

{

cin.putback(ch);cinoperand;opnd.push(operand);prior_char=0;GetChar(ch);

}

elseif(!IsOperator(ch))

{

}

else

{

cout表达式中出现非法字符!endl;while(cinch,ch!==);

return;

if((prior_char===||prior_char==()(ch==+||ch==-))opnd.push(0);if(isp(optr_top)icp(ch))

{

optr.push(ch);prior_char=ch;

GetChar(ch);

}

elseif(isp(optr_top)icp(ch))

{

optr.top(op);optr.pop();if(!DoOperator(op))return;

}

elseif(isp(

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档