数据结构课程设计--一元稀疏多项式计算器-修订编选

上传人:l****6 文档编号:149403750 上传时间:2020-10-26 格式:PDF 页数:15 大小:489.29KB
返回 下载 相关 举报
数据结构课程设计--一元稀疏多项式计算器-修订编选_第1页
第1页 / 共15页
数据结构课程设计--一元稀疏多项式计算器-修订编选_第2页
第2页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构课程设计--一元稀疏多项式计算器-修订编选》由会员分享,可在线阅读,更多相关《数据结构课程设计--一元稀疏多项式计算器-修订编选(15页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验报告 一元稀疏多项式计算器 安子烨PB12203079 实验目的 实现一元多项式的简单运算功能,掌握线性表的知识,提高编程能力。 功能清单 1. 一元多项式创建 2. 显示一元多项式 3. 复制一元多项式 4. 多项式加法 5. 多项式减法 6. 修改一元多项式 7. 删除一元多项式 8. 销毁记录 实验设计 该多项式计算器以菜单驱动的形式实现上述各运算功能。最多可支持十条记录,分别用指针数组 引导存储于十个不同的位置。以下为程序的部分源代码。 #include #include #include typedef struct LinkList double coef; int e

2、xpn; LinkList *next; LNode; void CreatPolyn(LinkList *h)/创建多项式 LinkList *q=NULL, *w=NULL, *p=NULL; double m=0; int n=0; (*h)=(LinkList *)malloc(sizeof(LinkList); (*h)-coef=0; (*h)-expn=0; (*h)-next=NULL; printf(请输入 X的系数和指数 , 当系数为零时结束创建n); scanf(%lf%d, while(m!=0) q=(LinkList *)malloc(sizeof(LinkList

3、); q-coef=m; q-expn=n; q-next=NULL; if(*h)-next=NULL) if(q-expn=(*h)-expn) (*h)-coef+=q-coef; else if(*h)-expnq-expn) q-next=(*h); *h=q; else (*h)-next=q; else for(w=(*h);w-next!=NULL;w=w-next) if(q-expn=w-expn) w-coef+=q-coef; break; else if(w-expnq-expn) (*h)=q; break; else if(w-expnexpn) w-next=q

4、; break; if(w-next=NULL) if(w-expn=q-expn) w-coef+=q-coef; else if(w-expnexpn) w-next=q; printf(请输入 X的系数和指数 , 当系数为零时结束创建n); scanf(%lf%d, void PrintPolyn(LinkList *p, int i)/打印多项式 printf(第%d个多项式是 :,i); while(p!=NULL) if(p-coef)0) printf(+%lf*X%d,p-coef,p-expn); else if(p-coef)coef,p-expn); p=p-next;

5、printf(n); void CopyPolyn(LinkList *M, LinkList *N)/多项式复制 LinkList *p=NULL, *q=NULL, *w=NULL; (*N)=(LinkList *)malloc(sizeof(LinkList); (*N)-coef=(*M)-coef; (*N)-expn=(*M)-expn; (*N)-next=NULL; for(w=(*N),p=(*M)-next;p!=NULL;p=p-next) q=(LinkList *)malloc(sizeof(LinkList); q-coef=p-coef; q-expn=p-ex

6、pn; q-next=p-next; w-next=q; w=w-next; void AddPolyn(LinkList *M, LinkList *N, LinkList *X)/多项式加法 LinkList *p=NULL, *q=NULL, *w=NULL, *z=NULL; (*X)=(LinkList *)malloc(sizeof(LinkList); (*X)-coef=0; (*X)-expn=0; (*X)-next=NULL; for(p=M,q=N,w=(*X);(p!=NULL) z=(LinkList *)malloc(sizeof(LinkList); if(p-

7、expnexpn) z-coef=p-coef; z-expn=p-expn; z-next=NULL; p=p-next; w-next=z; w=w-next; else if(p-expnq-expn) z-coef=q-coef; z-expn=q-expn; z-next=NULL; q=q-next; w-next=z; w=w-next; else if(p-expn=q-expn) z-coef=p-coef+q-coef; z-expn=p-expn; z-next=NULL; p=p-next; q=q-next; w-next=z; w=w-next; if(p=NULL

8、) for(;q!=NULL;) z=(LinkList *)malloc(sizeof(LinkList); z-coef=q-coef; z-expn=q-expn; z-next=NULL; q=q-next; w-next=z; w=w-next; else if(q=NULL) for(;p!=NULL;) z=(LinkList *)malloc(sizeof(LinkList); z-coef=p-coef; z-expn=p-expn; z-next=NULL; p=p-next; w-next=z; w=w-next; for(w=(*X);w!=NULL;w=w-next)

9、 printf(%lf %dn,w-coef,w-expn); void SubtractPolyn(LinkList *M, LinkList *N, LinkList *X)/多项式减法 LinkList *p=NULL, *q=NULL, *w=NULL, *z=NULL; (*X)=(LinkList *)malloc(sizeof(LinkList); (*X)-coef=0; (*X)-expn=0; (*X)-next=NULL; for(p=M,q=N,w=(*X);(p!=NULL) z=(LinkList *)malloc(sizeof(LinkList); if(p-ex

10、pnexpn) z-coef=p-coef; z-expn=p-expn; z-next=NULL; p=p-next; w-next=z; w=w-next; else if(p-expnq-expn) z-coef=-q-coef; z-expn=q-expn; z-next=NULL; q=q-next; w-next=z; w=w-next; else if(p-expn=q-expn) z-coef=p-coef-q-coef; z-expn=p-expn; z-next=NULL; p=p-next; q=q-next; w-next=z; w=w-next; if(p=NULL)

11、 for(;q!=NULL;) z=(LinkList *)malloc(sizeof(LinkList); z-coef=-q-coef; z-expn=q-expn; z-next=NULL; q=q-next; w-next=z; w=w-next; else if(q=NULL) for(;p!=NULL;) z=(LinkList *)malloc(sizeof(LinkList); z-coef=p-coef; z-expn=p-expn; z-next=NULL; p=p-next; w-next=z; w=w-next; /*for(w=(*X);w!=NULL;w=w-nex

12、t) printf(%lf %dn,w-coef,w-expn); */ void ValuePolyn(LinkList *h, double x)/多项式求值 double sum=0, a=0; while(h!=NULL) a=pow(x,h-expn); sum=sum+(h-coef)*a; h=h-next; printf(所求多项式的值为%lfn,sum); void DeletePolyn(LinkList *h) LinkList *p=(*h)-next; (*h)=NULL; while(p!=NULL) free(*h); (*h)=p; p=p-next; void

13、 RevisePolyn(LinkList *h, int i) int n=0; int choose=0; double m=0; LinkList *q=NULL, *w=NULL; PrintPolyn(*h),i); printf(请输入你想执行的操作代号(添加:1;修改: 2;删除: 3)n); scanf(%d, switch(choose) case 1: printf(输入你想要添加项的系数和次数n); scanf(%lf%d, q=(LinkList *)malloc(sizeof(LinkList); q-coef=m; q-expn=n; q-next=NULL; fo

14、r(w=(*h);w-next!=NULL;w=w-next) if(w-expnq-expn) (*h)=q; break; else if(w-expnexpn) w-next=q; break; if(w-expnnext=q; break; case 2: printf(输入你想要修改项的系数和次数n); scanf(%lf%d, for(w=(*h);w!=NULL;w=w-next) if(w-expn=n) w-coef=m; printf(未找到该项。n); break; case 3: printf(输入你想要删除项的次数n); scanf(%d, for(w=(*h);w!=NULL;w=w-next) if(w-expn=n) w-coef=0; break; default: printf(输入错误,修改失败n); void main() /*int i=n=N1=N2=0;*/ LinkList *p10=0,0,0,0,0,0,0,0,0,0; int i=0, j=0, k=0; int choose=0; double m=0, x=0; printf(请输入 n); printf(菜单: n); printf(1 创建多项式 n); printf(2 显示多项式 n); printf(3 复制多项式 n); prin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号