1、数据结构课程设计一元多项式加法减法乘法运算的实现1.一元多项式加法、减法、乘法运算的实现设计内容及要求1)设计内容(1)使用顺序存储结构实现多项式加、减、乘运算。例如:,求和结果:(2)使用链式存储结构实现多项式加、减、乘运算,求和结果:2)设计要求(1)用C语言编程实现上述实验内容中的结构定义和算法。(2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。(3)用switch语句设计如下选择式菜单。 *数据结构综合性实验* *一、多项式的加法、减法、乘法运算* * 1.多项式创建 * * 2.多项式相加 * * 3.多项式相减 * 4.多项式相乘 * 5.清空多项式 *
2、 0.退出系统 * 请选择(05) *请选择(0-5):数据结构设计根据下面给出的存储结构定义:#define MAXSIZE 20 xpn!= i+; if(ip-last) return 0; else return 1; int Insert_ElementByOrder(polynomial*p,term x) int j; if(PloynStatus(p)=-1) return 0; if(p-last=MAXSIZE-1) coutThe polym is full!last;while(p-termsj.expn=0) p-termsj+1=p-termsj; j-; p-te
3、rmsj+1=x; p-last+; return 1;int CreatePolyn(polynomial*P,int m) float coef; int expn; term x; if(PloynStatus(P)=-1) return 0; if(mMAXSIZE) printf(顺序表溢出n); return 0; else printf(请依次输入%d对系数和指数.n,m); for(int i=0;i return; else if return; else return=; polynomial*addPloyn(polynomial*p1,polynomial*p2) in
4、t i,j,k; i=0; j=0; k=0; if(PloynStatus(p1)=-1)|(PloynStatus(p2)=-1) return NULL; polynomial*p3=Init_Polynomial(); while(ilast & jlast) switch(compare(p1-termsi,p2-termsj) case: p3-termsk+=p1-termsi+; p3-last+; break; casetermsk+=p2-termsj+; p3-last+; break; case=: if(p1-termsi.coef+p2-termsj.coef!=0
5、) p3-termsk.coef=p1-termsi.coef+p2-termsj.coef; p3-termsk.expn=p1-termsi.expn; k+; p3-last+; i+; j+; while(ilast) p3-termsk+=p1-termsi+; p3-last+; return p3;polynomial*subStractPloyn(polynomial*p1,polynomial*p2) int i; i=0; if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1) return NULL; polynomial*p3=Init_
6、Polynomial(); p3-last=p2-last; for(i=0;ilast;i+) p3-termsi.coef=-p2-termsi.coef; p3-termsi.expn=p2-termsi.expn; p3=addPloyn(p1,p3); return p3;polynomial*mulitPloyn(polynomial*p1,polynomial*p2) int i; int j; int k; i=0; if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1) return NULL; polynomial*p3=Init_Polyn
7、omial(); polynomial*p=new polynomial*p2-last+1; for(i=0;ilast;i+) for(k=0;klast;k+) pk=Init_Polynomial(); pk-last=p1-last; for(j=0;jlast;j+) pk-termsj.coef=p1-termsj.coef*p2-termsk.coef; pk-termsj.expn=p1-termsj.expn+p2-termsk.expn; p3=addPloyn(p3,pk); return p3;void printPloyn(polynomial*p) int i;
8、for(i=0;ilast;i+) if(p-termsi.coef0 & i0) cout+termsi.coef; else couttermsi.coef; coutxtermsi.expn; coutendl;void menu() couttt*数据结构综合性实验*endl; couttt*一、多项式的加、减、乘法运算*endl; couttt* 1.多项式创建 *endl; couttt* 2.多项式相加 *endl; couttt* 3.多项式相减 *endl; couttt* 4.多项式相乘 *endl; couttt* 5.清空多项式 *endl; couttt* 0.退出系
9、统 *endl; couttt* 请选择(0-5) *endl; couttt*endl;void main() int sel; polynomial*p1=NULL; polynomial*p2=NULL; polynomial*p3=NULL; while(1) menu(); coutsel; switch(sel) case 1: p1=Init_Polynomial(); p2=Init_Polynomial(); int m; printf(请输入第一个多项式的项数:n); scanf(%d,&m); CreatePolyn(p1,m); printf(第一个多项式的表达式为p1
10、=); printPloyn(p1); printf(请输入第二个多项式的项数:n); scanf(%d,&m); CreatePolyn(p2,m); printf(第二个多项式的表达式为p2=); printPloyn(p2); break; case 2: printf(p1+p2=); if(p3=subStractPloyn(p1,p2)!=NULL) printPloyn(p3); break; case 3: printf(np1-p2=); if(p3=subStractPloyn(p1,p2)!=NULL) printPloyn(p3); break; case 4: pri
11、ntf(np1*p2=); if(p3=mulitPloyn(p1,p2)!=NULL) printPloyn(p3); case 5: Reset_Polynomial(p1); Reset_Polynomial(p2); Reset_Polynomial(p3); break; case 0: return; return;程序执行结果2.迷宫问题实现设计内容及要求1)设计内容以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的道路,或得出没有通路的结论。2)设计要求(1)用C语言编程实现上述实验内容中的结构定义和算法;(2
12、)要有main()函数,并且在main()函数中使用检测数据调用上述算法;数据结构设计根据以上问题给出存储结构定义:typedef struct =0; move0.y=1; move1.x=1; move1.y=1; move2.x=1; move2.y=0; move3.x=1; move3.y=-1; move4.x=0; move4.y=-1; move5.x=-1; move5.y=-1; move6.x=-1; move6.y=0; move7.x=-1; move7.y=1;void printS(dataType temp) int static i=0; printf(第%d
13、次入栈元素为:,+i); printf(%d,%d)%dn,;int find_Path(int mazeM+2N+2,item move8) SeqStack*s=InitSeqStack(); dataType temp; int x,y,d,i,j; =1; =1; =-1; Push(s,temp); while(!StackEmpty(s) Pop(s,&temp); x=; y=; d=+1; while(d8) i=x+moved.x; j=y+moved.y; if(mazeij=0) =x; =y; =d; Push(s,temp); printS(temp); x=i; y
14、=j; mazexy=-1; if(x=M & y=N) print_Path(s); return 1; else d=0; else d+; return 0;void print_Path(SeqStack*s) printf(迷宫路径为:n); for(int i=0;itop;i+) printf(%d,%d)%d-,s-datai.x,s-datai.y,s-datai.d); printf(%d,%d)%dn,s-datai.x,s-datai.y,s-datai.d);void main() init_move(move); if(!find_Path(maze,move) p
15、rintf(迷宫路径不存在);程序执行结果总 结通过这本次课程设计,加深了我对数据结构这门课程知识的理解,使我更熟练掌握实践技巧。我通过这一周的时间在选题,编译调试,查阅相关文献资料,认真思考,敢于实践操作,攻克了一个个错误,完成了此次课程设计。在“一元多项式的加、减、乘法运算实现”中主要使用了线性表的基本操作,使我更进一步理解线性表的顺序存储和链式存储结构,熟练线性表的插入、删除等基本功能;“迷宫问题的实现”又是栈的典型实际应用,在编译调试此程序更突出了栈的特性。通过实际应用的程序编译来巩固自己数据结构的相关知识,更能加深记忆。这次课程设计,对我的程序设计和调试能力有很大的提升。这次课程设计使我深刻认识到自己专业知识的匮乏,程序设计的能力的不足。通过这次的课程设计也提高了我的独立思考、敢于实践操作能力,弥补了我的部分专业知识的不足之处。我的程序设计思想和代码的编写和调试能力在此次课设期间有所提高。这样一种更贴切实际的课程设计,更能提高我的学习效率,让我真正理解这门课程的知识要点。最后,非常感谢雷老师在平时以及在本次课设中给予我们的耐心的教导与帮助。参考文献【1】数据结构(C语言版) 主编:严蔚敏 吴伟民【2】C程序设计 主编:谭浩强【3】数据结构(C语言版)例题详解与课程设计指导 主编:秦锋 袁志祥【4】二级C语言程序设计 主编:刘文辉
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1