ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:174KB ,
资源ID:10167701      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10167701.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计—一元多项式加法、减法、乘法运算的实现.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计—一元多项式加法、减法、乘法运算的实现.doc

1、11.一元多项式加法、减法、乘法运算的实现1.1 设计内容及要求1)设计内容(1)使用顺序存储结构实现多项式加、减、乘运算。例如:,10321058)(46 xxxf xxxg234510107)(求和结果: 28)(356gf(2)使用链式存储结构实现多项式加、减、乘运算,103510)(0xxf xxxg320450)( 109 求和结果: 3145)( 29gf2)设计要求(1)用 C 语言编程实现上述实验内容中的结构定义和算法。(2)要有 main()函数,并且在 main()函数中使用检测数据调用上述算法。(3)用 switch 语句设计如下选择式菜单。*数据结构综合性实验*一、多项

2、式的加法、减法、乘法运算* 1.多项式创建 * 2.多项式相加 * 3.多项式相减 * 4.多项式相乘 * 5.清空多项式 * 0.退出系统 * 请选择(05) *请选择(0-5):1.2 数据结构设计根据下面给出的存储结构定义:2#define MAXSIZE 20 /定义线性表最大容量/定义多项式项数据类型typedef structfloat coef; /系数int expn; /指数 term,elemType;typedef structterm termsMAXSIZE; /线性表中数组元素int last; /指向线性表中最后一个元素位置 SeqList;typedef Seq

3、List polynomial;1.3 基本操作函数说明 polynomial*Init_Polynomial();/初始化空的多项式int PloynStatus(polynomial*p)/判断多项式的状态 int Location_Element(polynomial*p,term x)在多项式 p 中查找与 x 项指数相同的项是否存在int Insert_ElementByOrder(polynomial*p,term x)/在多项式 p 中插入一个指数项 xint CreatePolyn(polynomial*P,int m)/输入 m 项系数和指数,建立表示一元多项式的有序表 pc

4、har compare(term term1,term term2)/比较指数项 term1 和指数项 term2polynomial*addPloyn(polynomial*p1,polynomial*p2)3/将多项式 p1 和多项式 p2 相加,生成一个新的多项式polynomial*subStractPloyn(polynomial*p1,polynomial*p2)/多项式 p1 和多项式 p2 相减,生成一个新的多项式polynomial*mulitPloyn(polynomial*p1,polynomial*p2)/多项式 p1 和多项式 p2 相乘,生成一个新的多项式void

5、printPloyn(polynomial*p)/输出在顺序存储结构的多项式 p1.4 程序源代码#include#include#include#define NULL 0#define MAXSIZE 20typedef structfloat coef;int expn;term,elemType;typedef structterm termsMAXSIZE;int last;SeqList;typedef SeqList polynomial;void printPloyn(polynomial*p);int PloynStatus(polynomial*p)if(p=NULL)re

6、turn -1;else if(p-last=-1)return 0;4elsereturn 1;polynomial*Init_Polynomial()polynomial*P;P=new polynomial;if(P!=NULL)P-last=-1;return P;elsereturn NULL;void Reset_Polynomial(polynomial*p)if(PloynStatus(p)=1)p-last=-1;int Location_Element(polynomial*p,term x)int i=0;if(PloynStatus(p)=-1)return 0;whi

7、le(ilast if(ip-last)return 0;elsereturn 1;5int Insert_ElementByOrder(polynomial*p,term x)int j;if(PloynStatus(p)=-1)return 0;if(p-last=MAXSIZE-1)coutlast;while(p-termsj.expn=0)p-termsj+1=p-termsj;j-;p-termsj+1=x;p-last+;return 1;int CreatePolyn(polynomial*P,int m)float coef;int expn;term x;if(PloynS

8、tatus(P)=-1)return 0;if(mMAXSIZE)printf(“顺序表溢出n“);return 0;elseprintf(“请依次输入%d 对系数和指数.n“,m);for(int i=0;iterm2.expn)return;else if(term1.expnlast p3-last+;break;casetermsk+=p2-termsj+;p3-last+;break;case=:if(p1-termsi.coef+p2-termsj.coef!=0)7p3-termsk.coef=p1-termsi.coef+p2-termsj.coef;p3-termsk.exp

9、n=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_Polynomial();p3-last=p2-last;for(i=0;ilast;i+)p3-termsi.coef=-p2-termsi.co

10、ef;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;8polynomial*p3=Init_Polynomial();polynomial*p=new polynomial*p2-last+1;for(i=0;ilast;i+)for(k=0;klast;k+)pk=Ini

11、t_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;for(i=0;ilast;i+)if(p-termsi.coef0 elsecouttermsi.coef;couttermsi.expn;coutsel;switch(sel)case 1:p

12、1=Init_Polynomial();p2=Init_Polynomial();int m;printf(“请输入第一个多项式的项数:n“);scanf(“%d“,CreatePolyn(p1,m);printf(“第一个多项式的表达式为 p1=“);printPloyn(p1);printf(“请输入第二个多项式的项数:n“);scanf(“%d“,CreatePolyn(p2,m);printf(“第二个多项式的表达式为 p2=“);printPloyn(p2);break;case 2:printf(“p1+p2=“);if(p3=subStractPloyn(p1,p2)!=NULL

13、)printPloyn(p3);break;case 3:printf(“np1-p2=“);if(p3=subStractPloyn(p1,p2)!=NULL)printPloyn(p3);break;case 4:printf(“np1*p2=“);if(p3=mulitPloyn(p1,p2)!=NULL)printPloyn(p3);case 5:10Reset_Polynomial(p1);Reset_Polynomial(p2);Reset_Polynomial(p3);break;case 0:return;return;1.5 程序执行结果11122.迷宫问题实现2.1 设计内

14、容及要求1)设计内容以一个 m*n 的长方阵表示迷宫,0 和 1 分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的道路,或得出没有通路的结论。2)设计要求(1)用 C 语言编程实现上述实验内容中的结构定义和算法;(2)要有 main()函数,并且在 main()函数中使用检测数据调用上述算法;2.2 数据结构设计根据以上问题给出存储结构定义:typedef struct /定义坐标int x;int y;item;/定义坐标和方向typedef structint x;int y;int d;dataType;/定义顺序栈的类型定义typedef struct

15、dataType dataMAXLEN;int top;13SeqStack;item move8; /8 邻域试探方向数组int mazeM+2N+2=1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,; /定义迷宫数组,0 表示有路径,1 表示不存在路径2.3 基本操作函数说明void print_Path(SeqStack

16、*s);/输出迷宫路线SeqStack*InitSeqStack()/该函数初始化一个空栈,并返回指向该栈的存储单元首地址int Push(SeqStack*s,dataType x)/将元素 x 入栈 s,若入栈成功返回结果 1;否则返回 0int StackEmpty(SeqStack*s)/该函数判断栈是否为空,若栈空返回结果 1;否则返回 0int Pop(SeqStack*s,dataType*x)/将栈顶元素出栈,放入 x 所指向的存储单元中,若出栈返回结果 1;否则返回 0void init_move(item move8)/初始化 8 邻域方向int find_Path(int

17、 mazeM+2N+2,item move8)/在迷宫 maze 二维数组中按 move 的 8 邻域方向探测迷宫路线,存在返回 1,14否则返回 0void print_Path(SeqStack*s)/输出栈 s 中所有迷宫路径2.4 程序源代码#include#include#define M 6#define N 8#define MAXLEN 100typedef structint x;int y;item;typedef structint x;int y;int d;dataType;typedef structdataType dataMAXLEN;int top;SeqSt

18、ack;item move8;int mazeM+2N+2=1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,;void print_Path(SeqStack*s);SeqStack*InitSeqStack()SeqStack*s;s=new SeqStack;15s-top=-1;return s;int Push(Seq

19、Stack*s,dataType x)if(s-top=MAXLEN-1)return 0;elses-top+;s-datas-top=x;return 1;int StackEmpty(SeqStack*s)if(s-top=-1)return 1;elsereturn 0;int Pop(SeqStack*s,dataType*x)if(StackEmpty(s)return 0;else*x=s-datas-top;s-top-;return 1;void init_move(item move8)move0.x=0;move0.y=1;move1.x=1;move1.y=1;move

20、2.x=1;move2.y=0;move3.x=1;move3.y=-1;move4.x=0;move4.y=-1;16move5.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 次入栈元素为:“,+i);printf(“(%d,%d)%dn“,temp.x,temp.y,temp.d);int find_Path(int mazeM+2N+2,item move8)SeqStack*s=InitSeqStack();da

21、taType temp;int x,y,d,i,j;temp.x=1;temp.y=1;temp.d=-1;Push(s,temp);while(!StackEmpty(s)Pop(s,x=temp.x;y=temp.y;d=temp.d+1;while(dtop;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)printf(“迷宫路

22、径不存在“);2.5 程序执行结果1819总 结通过这本次课程设计,加深了我对数据结构这门课程知识的理解,使我更熟练掌握实践技巧。我通过这一周的时间在选题,编译调试,查阅相关文献资料,认真思考,敢于实践操作,攻克了一个个错误,完成了此次课程设计。在“一元多项式的加、减、乘法运算实现”中主要使用了线性表的基本操作,使我更进一步理解线性表的顺序存储和链式存储结构,熟练线性表的插入、删除等基本功能;“迷宫问题的实现”又是栈的典型实际应用,在编译调试此程序更突出了栈的特性。通过实际应用的程序编译来巩固自己数据结构的相关知识,更能加深记忆。这次课程设计,对我的程序设计和调试能力有很大的提升。这次课程设计使我深刻认识到自己专业知识的匮乏,程序设计的能力的不足。通过这次的课程设计也提高了我的独立思考、敢于实践操作能力,弥补了我的部分专业知识的不足之处。我的程序设计思想和代码的编写和调试能力在此次课设期间有所提高。这样一种更贴切实际的课程设计,更能提高我的学习效率,让我真正理解这门课程的知识要点。最后,非常感谢雷老师在平时以及在本次课设中给予我们的耐心的教导与帮助。20参考文献【1】数据结构(C 语言版) 主编:严蔚敏 吴伟民【2】C 程序设计 主编:谭浩强【3】数据结构(C 语言版)例题详解与课程设计指导 主编:秦锋 袁志祥【4】二级 C 语言程序设计 主编:刘文辉

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报