基于栈的整数计算器实现

基于栈的整数计算器实现

ID:37260335

大小:93.68 KB

页数:8页

时间:2019-05-20

基于栈的整数计算器实现_第1页
基于栈的整数计算器实现_第2页
基于栈的整数计算器实现_第3页
基于栈的整数计算器实现_第4页
基于栈的整数计算器实现_第5页
资源描述:

《基于栈的整数计算器实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、F:快盘ProgramDesignDataStructureExperiment2_1120102569_张硕Main.c1#include#includestructcharnode{chardata_ch;structcharnode*link;};typedefstructcharnodeCharNode;//定义操作符栈的节点数据类型CharNode*CreateOeratorStack();//分配附加头结点,方便后续进出栈操作,如果内存空间不足,错误程序退出;分配成功

2、,返回附加头结点指针voidOperatorStackPush(CharNode*head,charch);//进栈,数据插入到附加头结点的直接后继voidOperatorStackPop(CharNode*head);//栈非空,出栈;否则错误,程序退出charOperatorStackGetTop(CharNode*head);//栈非空,返回栈顶元素;否则错误,程序退出intOperatorStackIsEmpty(CharNode*head);//判断栈是否为空,若是,返回1;否则返回0structintnode{in

3、tdata_int;structintnode*link;};typedefstructintnodeIntNode;//定义操作数栈的节点数据结构IntNode*CreateOperandStack();voidOperandStackPush(IntNode*head,intnumber);voidOperandStackPop(IntNode*head);intOperandStackGetTop(IntNode*head);intOperandStackIsEmpty(IntNode*head);#defineEND_

4、ISP0#defineEND_ICP0#defineLEFT_PARE_ISP1#defineLEFT_PARE_ICP8#definePOW_ISP7#definePOW_ICP6#defineMUL_ISP5#defineMUL_ICP4#defineDIV_ISP5#defineDIV_ICP4#definePLUS_ISP3#definePLUS_ICP2#defineSUB_ISP3#defineSUB_ICP2#defineRIGHT_PARE_ISP8#defineRIGHT_PARE_ICP1//定义各操作符优

5、先级关系,_ISP表示栈内优先数,_ICP表示栈外优先数;优先数越大,优先级越高intIsDigit(charch);//判断ch是否为数字,若是,返回1;否则,返回0intIsSpace(charch);//判断ch是否为空格,若是,返回1;否则,返回0F:快盘ProgramDesignDataStructureExperiment2_1120102569_张硕Main.c2intConvertCharToInt(charch);//如果ch是数字,则将其转换成对应的int值;否则错误,程序退出intGetIsp(

6、charch);//若ch是合法操作符,则返回其栈内优先数,否则错误,程序退出intGetIcp(charch);//若ch是合法操作符,则返回其栈外优先数,否则错误,程序退出intCalculate(intnum1,intnum2,charop);//若ch是可用于计算的操作符,则进行计算并返回结果;否则错误,程序退出intIntPow(intnum1,intnum2);//计算整数的整数次幂,并返回计算结果intmain(){charch;//ch为当前读到的字符charoperator_out,operator_in;/

7、/operator_out栈外操作符,operator_in栈内操作符intdigit,result;//digit当前读到的操作数,result当前的计算结果intoperand1,operand2;//operator1左操作数,operator2右操作数CharNode*optr_head;//操作符栈IntNode*opnd_head;//操作数栈optr_head=CreateOeratorStack();opnd_head=CreateOperandStack();OperatorStackPush(optr_he

8、ad,'=');//结束标志进栈printf("Inputtheexpressionandputa'='intheend.");ch=getchar();while(ch!=''){if(IsDigit(ch)){digit=0;while(IsDigit(ch)){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。