资源描述:
《数据结构课程设计--一元稀疏多项式计算器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、17数据结构实验报告——一元稀疏多项式计算器安子烨PB12203079实验目的实现一元多项式的简单运算功能,掌握线性表的知识,提高编程能力。功能清单1.一元多项式创建2.显示一元多项式3.复制一元多项式4.多项式加法5.多项式减法6.修改一元多项式7.删除一元多项式8.销毁记录实验设计该多项式计算器以菜单驱动的形式实现上述各运算功能。最多可支持十条记录,分别用指针数组引导存储于十个不同的位置。以下为程序的部分源代码。#include#include#includetypedefstructLinkList{doublecoe
2、f;intexpn;LinkList*next;}LNode;voidCreatPolyn(LinkList**h)//创建多项式{LinkList*q=NULL,*w=NULL,*p=NULL;17doublem=0;intn=0;(*h)=(LinkList*)malloc(sizeof(LinkList));(*h)->coef=0;(*h)->expn=0;(*h)->next=NULL;printf("请输入X的系数和指数,当系数为零时结束创建");scanf("%lf%d",&m,&n);while(m!=0){q=(LinkList*)malloc(sizeo
3、f(LinkList));q->coef=m;q->expn=n;q->next=NULL;if((*h)->next==NULL){if(q->expn==(*h)->expn)(*h)->coef+=q->coef;elseif((*h)->expn>q->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;}elseif((w->expn>q->expn)&&(w==*h
4、)){q->next=(*h);(*h)=q;break;17}elseif((w->expnexpn)&&(w->next->expn>q->expn)){q->next=w->next;w->next=q;break;}}if(w->next==NULL){if(w->expn==q->expn)w->coef+=q->coef;elseif(w->expnexpn)w->next=q;}}printf("请输入X的系数和指数,当系数为零时结束创建");scanf("%lf%d",&m,&n);}}voidPrintPolyn(LinkList*p,in
5、ti)//打印多项式{printf("第%d个多项式是:",i);while(p!=NULL){if((p->coef)>0)printf("+%lf*X^%d",p->coef,p->expn);elseif((p->coef)<0)printf("%lf*X^%d",p->coef,p->expn);p=p->next;}printf("");17}voidCopyPolyn(LinkList**M,LinkList**N)//多项式复制{LinkList*p=NULL,*q=NULL,*w=NULL;(*N)=(LinkList*)malloc(sizeof(Link
6、List));(*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->expn;q->next=p->next;w->next=q;w=w->next;}}voidAddPolyn(LinkList*M,LinkList*N,LinkList**X)//多项式加法{LinkList*p=NULL,*q=
7、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)&&(q!=NULL);){z=(LinkList*)malloc(sizeof(LinkList));if(p->expnexpn){z->coef=p->coef;z->expn=p->expn;z->next=NULL