多项式的设计报告数据结构课程设计.doc
上传人:天马****23 上传时间:2024-09-12 格式:DOC 页数:27 大小:258KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

多项式的设计报告数据结构课程设计.doc

多项式的设计报告数据结构课程设计.doc

预览

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

10 金币

下载此文档

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

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

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

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

目录1.多项式的设计报告…….………………………2a.概要设计…….………………………2b.详细设计…….………………………3c.调试分析…….………………………8数据结果…….………………………8时间复杂度分析……………………10问题和解决方法……………………10源程序代码展示…………………………102.二叉树的设计报告…….………………………18a.概要设计…….………………………18b.详细设计…….………………………19c.调试分析…….………………………21数据结果…….………………………21时间复杂度分析………………………22问题和解决方法………………………23源程序代码展示…………………………233.课程设计总结…………………………………26多项式的设计报告概要设计1.将该存储结构定义为链式结构的线性表存储结构的定义:structNode{floatcoef;//结点类型intexp;};typedefNodepolynomial;structLNode{polynomialdata;//链表类型LNode*next;};typedefLNode*Link;2.创建函数流程图开始分配空间第i个的系数ceof第i个的指数expexp>0?否是错误,重新输入JudgeIfExpSame=1?否是错误,重新输入1=>i注释:JudgeIfExpSame函数是判断输入的指数是否与多项式中已存在的某项的指数相同3.主程序流程图:4.多项式加法的算法分析将链表pa,pb分别复制到新建链表p1,p2中,再新建链表pc,然后分别依次对p1,p2链表中结点中的指数进行比较,将指数小的结点的值先赋值给pc中的结点,两个指数相同时,将系数相加后一起赋值给pc中的结点,最后将p1或者p2中多余的结点直接赋值给pc链表,pc链表就是通过加法后的多项式5.多项式减法的算法分析新建链表pt,将pb中的结点值赋给pt,然后将pt中所有结点的系数乘上(-1)后,再将pt和pa相加就得到相减后的多项式。6.多项式乘法的算法分析同样将链表pa,pb中的结点赋值给p1,p2,然后依次将p1中的每个结点的值分别与p2中每个结点的值相乘后赋值给pc,就得到相乘后的多项式。详细设计创建多项式的源程序voidCreateLink(Link&L,intn){if(L!=NULL)//首先判断是已经存在多项式,如果存在则销毁{DestroyLink(L);}Linkp,newp;L=newLNode;L->next=NULL;//分配结点空间,new相当于malloc函数(L->data).exp=-1;//创建头结点p=L;for(inti=1;i<=n;i++){newp=newLNode;cout<<"请输入第"<<i<<"项的系数和指数:"<<endl;cout<<"系数:";cin>>(newp->data).coef;cout<<"指数:";cin>>(newp->data).exp;if(newp->data.exp<0){cout<<"您输入有误,指数不允许为负值!"<<endl;deletenewp;i--;continue;//输入不符合要求则删除重新创建,delete相当于free函数}newp->next=NULL;p=L;if(newp->data.coef==0){cout<<"系数为零,重新输入!"<<endl;deletenewp;i--;continue;}while((p->next!=NULL)&&((p->next->data).exp<(newp->data).exp)){p=p->next;//p指向指数最小的那一个}if(!JudgeIfExpSame(L,newp)){newp->next=p->next;p->next=newp;}else{cout<<"输入的该项指数与多项式中已存在的某项相同,请重新创建一个正确的多项式"<<endl;deletenewp;DestroyLink(L);CreateLink(L,n);//创建多项式没有成功,递归调用重新创建break;}}}二.多项式相加模块的源程序voidPolyAdd(Link&pc,Linkpa,Linkpb){Linkp1,p2,p,pd;CopyLink(p1,pa);CopyLink(p2,pb);//将链表pa,pb分别复制给p1,p2pc=newLNode;pc->next=NUL