一元多项式的相加.doc

一元多项式的相加.doc

ID:60787626

大小:29.50 KB

页数:4页

时间:2020-12-18

一元多项式的相加.doc_第1页
一元多项式的相加.doc_第2页
一元多项式的相加.doc_第3页
一元多项式的相加.doc_第4页
资源描述:

《一元多项式的相加.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验题目:一元多项式的相加设有两个一元多项式:p(x)=p0+p1x+p2x2+···+pnxnq(x)=q0+q1x+q2x2+···+qmxm多项式项的系数为实数,指数为整数,设计实现两个一元多项式的相加的程序:①定义多项式项的数据结构②定义多项式链表建立函数:返回所建立的链表的头结点③定义多项式相加的函数,两个多项式相加生成一个新的多项式链表,返回生成的多项式的头结点;④定义输出多项式的函数;⑤主函数通过调用多项式链表建立函数,输入两个多项式;调用多项式相加函数,调用多项式输出函数,分别输出所输入的多项式、相加后的多项式。实验源代码:#include

2、>#includetypedefstructpolynode/*用单链表存储多项式的结点结构*/{intcoef;/*多项式的系数*/intexpn;/*指数*/structpolynode*next;}node;node*create(void)/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/{node*h,*r,*s;intc,e;h=(node*)malloc(sizeof(node));/*建立多项式的头结点,为头结点分配存储空间*/r=h;/*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/printf

3、("先输入系数:");scanf("%d",&c);/*输入系数*/printf("再输入指数:");scanf("%d",&e);/*输入指针*/while(c!=0)/*输入系数为0时,表示多项式的输入结束*/{s=(node*)malloc(sizeof(node));/*申请新结点*/s->coef=c;/*申请新结点后赋值*/s->expn=e;/*申请新结点后赋值*/r->next=s;/*做尾插,插入新结点*/r=s;/*r始终指向单链表的表尾*/printf("先输入系数:");scanf("%d",&c);printf("再输入指数:");scanf("

4、%d",&e);}r->next=NULL;/*将表的最后一个结点的next置NULL,以示表结束*/return(h);}voidpolyadd(node*polya,node*polyb)/*一元多项式相加函数,用于将两个多项式相加,然后将和多项式存放在多项式polya中,并将多项式ployb删除*/{node*p,*q,*pre,*temp;intsum;p=polya->next;/*令p和q分别指向polya和polyb多项式链表中的第一个结点*/q=polyb->next;pre=polya;/*位置指针,指向和多项式polya*/while(p!=NULL&

5、&q!=NULL){if(p->expnexpn)/*若p指向的多项式指数小于q指的指数*/{pre->next=p;pre=pre->next;p=p->next;}elseif(p->expn==q->expn)/*若指数相等,则相应的系数相加*/{sum=p->coef+q->coef;if(sum!=0){p->coef=sum;pre->next=p;pre=pre->next;p=p->next;temp=q;q=q->next;free(temp);}else/*如果系数和为零,则删除结点p与q,并将指针指向下一个结点*/{temp=p->next;

6、free(p);p=temp;temp=q->next;free(q);q=temp;}}else/*若p指数大于q指数*/{pre->next=q;pre=pre->next;q=q->next;}}if(p!=NULL)pre->next=p;elsepre->next=q;}voiddisplay(node*p)/*输出函数,打印出一元多项式*/{while(p->next!=NULL){p=p->next;if(p->next!=0)printf("%d*x^%d+",p->coef,p->expn);elseprintf("%d*x^%d",p->coef,p-

7、>expn);}printf("---------------------------------------------------");}main()/*主函数*/{node*polya,*polyb;printf("请按指数大小输入一个一元多项式(当输入的系数为0时结束输入!):");polya=create();/*调用建立链表函数,创建多项式A*/display(polya);printf("请按指数大小输入另一个一元多项式(当输入的系数为0时结束输入!):");polyb=create();disp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。