一元多项式的相加.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一元多项式的相加

#include stdio.h #include malloc.h #include stdlib.h #define NULL 0 typedef struct NODE { ?float? coef;????????????????? //系数 ?int??? expn;????????????????? //指数 ?struct NODE *next;? }NODE; NODE *Creat(int n); void print(NODE *head); NODE *AddPolyn(NODE *head1, NODE *head2); NODE *Delfirst(NODE *head, NODE *q); void InsertBefore(NODE *p1, NODE *p2); int? compare(int a, int b); main() { ?NODE *head1, *head2, *head3; ?int n1, n2; ?printf(请输入你需要的多项数的数目 n1? : ); ??scanf(%d, n1); ?head1 = Creat(n1); ?printf(第一个多项式的显示 : \n); ?print(head1); ??? ?printf(\n请输入你需要的多项数的数目 n2? : ); ??scanf(%d, n2); ?head2 = Creat(n2); ?printf(\n第二个多项式的显示 : \n); ?print(head2); ?head3 = AddPolyn(head1, head2); ?printf(\n合并后的多项式的显示 : \n); ?print(head3); ?printf(\n); } /*创建链表*/ NODE *Creat(int n) { ?NODE *current, *previous, *head; ?int i; ?head = (NODE *)malloc(sizeof(NODE)); /*创建头结点*/ ?previous = head; ? ?for(i = 0; i n; i++) ?{ ??current = (NODE *)malloc(sizeof(NODE)); ?? ??printf(请输入系数和指数 : ); ??scanf(%f%d, current-coef, current-expn); ??previous-next = current; ??previous = current; ?} ?previous-next = NULL; ?return head; } /*一元多项式的想加,总体考虑,可分qa的指数比qb小,或等于pb(如果系数相加等于0和不等于0),或大于pb 里面由InsertBefore和Delfirst两个小模块组成一部分*/ NODE? *AddPolyn(NODE *head1, NODE *head2) { ?NODE *ha, *hb, *qa, *qb; ?int a, b; ?float sum; ?ha = head1;????????????????? /*ha和hb指向头结点*/ ?hb = head2; ?qa = ha-next;???????????? /*qa和qb指向头结点的下一个结点*/ ?qb = hb-next; ? ?while(qa qb)???????????? /*qa和qb均非空*/ ?{ ??a = qa-expn;? ??b = qb-expn; ??switch(compare(a, b)) { ??case -1 :????????????? /*qa-expn qb-expn*/ ???ha = qa; ???qa = qa-next; ???break; ???? ??case 0 : ???sum = qa-coef + qb-coef;? /*系数的和*/ ???if(sum != 0.0) {??????????? /*如果不是0.0*/ ????qa-coef = sum;???????? /*改变系数*/ ????ha = qa;????????????????????????????????? ???}else { ????free(Delfirst(ha, qa)); ???}?????????????????????????????? ???free(Delfirst(hb, qb)); ???qa = ha-next;????????????? ???qb = hb-next;????????????? /*qb释放后要重新赋值*/ ???break; ?? ??case 1 :

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档