您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 心得体会 > 数据结构课程设计心得体会范文实用4篇
参考资料,少熬夜!数据结构课程设计心得体会范文实用4篇【导读指引】三一刀客最漂亮的网友为您整理分享的“数据结构课程设计心得体会范文实用4篇”文档资料,供您学习参考,希望此文档对您有所帮助,喜欢就分享给朋友们吧!数据结构课程设计1一,课程题目(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表(P53)给出的算符优先关系,实现对于算术四则混合运算(加、减、乘、除)表达式的求值。例如:7+(4-2)*3+12/2=19。注:按照四舍五入的方式将四则运算结果取整。二,程序设计思想在程序中分别设立一个运算符栈(OPTR栈),用于存储‘+’,‘-’,‘*’,‘/’,‘#’(‘#’用于判断算术表达式结束),和一个操作数栈(OPND栈),用于存放整数,输入算式后,先将数字与运算符分开入i栈,若为数字则先用转换函数将char类型的数转换为int型并进入操作数栈,若为运算符则根据教材表(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){=(int*)malloc(100*sizeof(int));=;=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){*=c;++;}intPopNum(SqlNum&S){intc;;c=*;returnc;}typedefstruct{char*base;char*top;intStacksize;}SqlCal;voidInitCalStack(SqlCal&S){=(char*)malloc(100*sizeof(char));=;=100;}voidPushCal(SqlCal&S,charc){*=c;++;}charPopCal(SqlCal&S){charc;;c=*;returnc;}intIn(charc,chars[]){inti;for(i=0;iif(c==s[i])return1;return0;}charGetTopCal(SqlCal&s){charc;c=*();returnc;}intGetTopNum(SqlNum&s){intc;c=*();returnc;}charPreced(chara,charb){charc[7]={'+','-','*','/','(',')','#'};chard[7][7]={{'','','','','','','','','',''},{'','','','','',''},{'','','',''},{'if(b=='+'){returnd[0][0];}if(b=='-'){returnd[0][1];}if(b=='*'){returnd[0][2];}if(b=='/'){returnd[0][3];}if(b=='('){returnd[0][4];}if(b==')'){returnd[0][5];}if(b=='#'){returnd[0][6];}}if(a=='-'){if(b=='+'){参考资料,少熬夜!returnd[1][0];}if(b=='-'){returnd[1][1];}if(b=='*'){returnd[1][2];}if(b=='/'){returnd[1][3];}if(b=='('){returnd[1][4];}if(b==')'){returnd[1][5];}if(b=='#'){returnd[1][6];}}if(a=='*'){if(b=='+'){returnd[2][0];}if(b=='-'){returnd[2][1];}if(b=='*'){returnd[2][2];}if(b=='/'){returnd[2][3];}if(b=='('){returnd[2][4];}if(b==')'){returnd[2][5];}if(b=='#'){returnd[2][6];}}if(a=='/'){if(b=='+'){returnd[3][0];}if(b=='-'){returnd[3][1];}if(b=='*'){returnd[3][2];}if(b=='/'){returnd[3][3];}if(b=='('){returnd[3][4];}if(b==')'){returnd[3][5];}if(b=='#'){returnd[3][6];}}if(a=='('){if(b=='+'){returnd[4][0];}if(b=='-'){returnd[4][1];}参考资料,少熬夜!if(b=='*'){returnd[4][2];}if(b=='/'){returnd[4][3];}if(b=='('){returnd[4][4];}if(b==')'){returnd[4][5];}if(b=='#'){returnd[4][6];}}if(a==')'){if(b=='+'){returnd[5][0];}if(b=='-'){returnd[5][1];}if(b=='*'){returnd[5][2];}if(b=='/'){returnd[5][3];}if(b=='('){returnd[5][4];}if(b==')'){returnd[5][5];}if(b=='#'){returnd[5][6];}}if(a=='#'){if(b=='+'){returnd[6][0];}if(b=='-'){returnd[6][1];}if(b=='*'){returnd[6][2];}if(b=='/'){returnd[6][3];}if(b=='('){returnd[6][4];}if(b==')'){returnd[6][5];}if(b=='#'){returnd[6][6];}}return0;}intOperate(inta,chartheta,intb){intc;if(theta=='+'){c=a+b;returnc;}if(theta=='-'){c=a-b;returnc;}if(theta=='*'){c=a*b;returnc;}if(theta=='/'){c=a/b;returnc;}return0;}voidmain(){SqlCalOPTR;SqlNumOPND;charc,d[5]={'0','0','0','0','0'};intf=0;charop[]={'+','-','*',参考资料,少熬夜!'/','(',')','#'};InitCalStack(OPTR);InitNumStack(OPND);printf(“请输入算式并在尾部添加一个#号n”);c=getchar();PushCal(OPTR,'#');while(c!='#'||GetTopCal(OPTR)!='#'){if(!In(c,op)){d[0]=d[1];d[1]=d[2];d[2]=d[3];d[3]=d[4];d[4]=c;c=getchar();f=1;}else{if(f==1){PushNum(OPND,ParseInt(d));d[0]='0';d[1]='0';d[2]='0';d[3]='0';d[4]='0';f=0;}switch(Preced(GetTopCal(OPTR),c)){case'PushCal(OPTR,c);c=getchar();break;case'=':PopCal(OPTR);c=getchar();break;case'':chartheta;inta;intb;theta=PopCal(OPTR);b=PopNum(OPND);a=PopNum(OPND);PushNum(OPND,Operate(a,theta,b));break;}}}printf(“%dn”,GetTopNum(OPND));}程序运行结果:六,心得体会通过这次编程,我发现很多编程过程中的不足与问题,很多问题由于考虑不全面,导致程序运行失败。还有一些小问题,比如字母的大小写,括号的遗漏,语法书写错误等等一些基础错误,也是让我体会很深写程序要谨慎仔细。2012数据结构课程设计2数据结构参考资料,少熬夜!课程设计报告题目:一元多项式计算专业:信息管理与信息系统班级:2012级普本班学号:201201011367姓名:左帅帅指导老师:郝慎学时间:一、课程设计题目分析本课程设计要求利用C语言或C++编写,本程序实现了一元多项式的加法、减法、乘法、除法运算等功能。二、设计思路本程序采用C语言来完成课程设计。1、首先,利用顺序存储结构来构造两个存储多项式A(x)和B(x)的结构。2、然后把输入,加,减,乘,除运算分成五个主要的模块:实现多项式输入模块、实现加法的模块、实现减法的模块、实现乘法的模块、实现除法的模块。3、然后各个模块里面还要分成若干种情况来考虑并通过函数的嵌套调用来实现其功能,尽量减少程序运行时错误的出现。4、最后编写main()主函数以实现对多项式输入输出以及加、减、乘、除,调试程序并将不足的地方加以修改。三、设计算法分析1、相关函数说明:(1)定义数据结构类型为线性表的链式存储结构类型变量typedefstructPolyno
本文标题:数据结构课程设计心得体会范文实用4篇
链接地址:https://www.777doc.com/doc-10796629 .html