数据结构课程设计编辑最新精选.docx 立即下载
2025-08-27
约2.7万字
约46页
0
29KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

数据结构课程设计编辑最新精选.docx

数据结构课程设计编辑最新精选.docx

预览

免费试读已结束,剩余 41 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构课程设计

第一篇:数据结构课程设计一,课程题目(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表3.1(P53)给出的算符优先关系,实现对于算术四则混合运算(加、减、乘、除)表达式的求值。例如:7+(4-2)*3+12/2=19。注:按照四舍五入的方式将四则运算结果取整。二,程序设计思想在程序中分别设立一个运算符栈(OPTR栈),用于存储‘+’,‘-’,‘*’,‘/’,‘#’(‘#’用于判断算术表达式结束),和一个操作数栈(OPND栈),用于存放整数,输入算式后,先将数字与运算符分开入i栈,若为数字则先用转换函数将char类型的数转换为int型并进入操作数栈,若为运算符则根据教材表3.1(P53)给出的算符优先级关系,判断栈顶运算符和从键盘取得的运算符作优先级比较,若取得的运算符优先级高则进栈,直到取得运算符优先级低的,则将操作数取出作operate运算后存入栈顶,反复操作知道遇到‘#’,则结束运算,输出栈顶元素即为结果。三,程序流程图四,程序关键代码设计本次程序设计共调用了12个方法分别是:InitNumStack,ParseInt,PushNum,PopNum,InitCalStack,PopCal,PushCal,In,GetTopCal,GetTopNum,Preced,Operate。其中ParseInt方法intParseInt(charc[]){intnumber[5],i;for(i=0;inumber[i]=(int)(c[i])-48;}i=10000*number[0]+1000*number[1]+100*number[2]+10*number[3]+number[4];returni;}为将输入的数字字符型转换为整型的转换函数,通过Ascall表的转换关系,将输入的字符型数字转换为整型。在入栈前进行此方法,以便整型数的计算。Preced,Operate函数charPreced(chara,charb){charc[7]={'+','-','*','/','(',')','#'};chard[7][7]={{'>','>','','>'},{'>','>','','>'},{'>','>','>','>','','>'},{'>','>','>','>','','>'},{'','>','>','>','','>','>'},{'c=a+b;returnc;}if(theta=='-'){c=a-b;returnc;}if(theta=='*'){c=a*b;returnc;}if(theta=='/'){c=a/b;returnc;}return0;}其中preced是判定运算符栈的栈顶运算符C1与读入的运算符C2之间优先关系函数;Opearte为进行二元运算aCb的函数,如果是编译表达式,则产生这个运算的一组相应的指令并返回存放结果的中间变量名;如果是解释执行表达式,则直接进行该运算,并返回运算结果。五,程序源代码以及运行结果#include#include#includetypedefstruct{int*base;int*top;intStacksize;}SqlNum;voidInitNumStack(SqlNum&S){S.base=(int*)malloc(100*sizeof(int));S.top=S.base;S.Stacksize=100;}intParseInt(charc[]){intnumber[5],i;for(i=0;inumber[i]=(int)(c[i])-48;}i=10000*number[0]+1000*number[1]+100*number[2]+10*number[3]+number[4];returni;}voidPushNum(SqlNum&S,intc){*S.top=c;S.top++;}intPopNum(SqlNum&S){intc;S.top--;c=*S.top;returnc;}typedefstruct{char*base;char*top;intStacksize;}SqlCal;voidInitCalStack(SqlCal&S){S.base=(char*)malloc(100*sizeof(char));S.top=S.base;S.Stacksize=100;}voidPushCal(SqlCal&S,charc){*S.top=c;S.top++;}charPopCal(SqlCal&S){charc;S.top--;c=*S.top;returnc;}intIn(charc,chars[]){inti;for(i=0;iif(c==s[i])return1;ret
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

数据结构课程设计编辑最新精选

文档大小:29KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用