数据结构实验,用链表实现多项式加减乘.docxVIP

数据结构实验,用链表实现多项式加减乘.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#includestdio. h#includemalloc? h#includestdlib. h#includemath? h^define ERROR 0^define POLY sizeof(Polynomial)typedef struct Polynomial/*用单链表存储多项式的结点结构*/{int coef;/*多项式的系数*/int exp;/*指数*/struct Polynomial *next;/*next 是struct Polynomial 类型中的一个成员,它又指向struct Polynomial类型的数据,以此建立链表*/}Polynomial;Polynomial * CreatPolyn(void)/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/{Polynomial *head, *tail,*s;int c, e;head=(Polynomial *)malloc(POLY);/*建立多项式的头结点,为头结点分配存储空间*/if (! head)exit (ERROR);tail=head;/*ta订指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/ printf C系数:);scanf (%d, c) ; /*输入系数*/printf (指数:”);scanf (%d, e) ; /*输入指数*/if(c==0){printf (z,请重新输入);return NULL;}else{wh订e(c!=0)/*输入系数为0时,表示多项式的输入结束*/{s= (Polynomial *) malloc (POLY) ; /*申请新结点*/ s-coef=c;/*申请新结点后赋值*/s-exp=e;/*申请新结点后赋值*/tail-next=s; /*做尾插,插入新结点*/ tail二s;/*ta订始终指向单链表的表尾*/printf (*系数:);scanf (%d, c);printf (指数:”);scanf (%d, e);}ta订-next=NULL; /*将表的最后一个结点的next置NULL,以示表结束*/ return(head);}}void DestroyPolyn(Polynomial *p)//删除多项式{Polynomial *q;whi.1 e (p-next! =NULL){q=p-next;free(p);P二q;}}int PolyLength(Polynomial *p){Polynomial *q;int i=0;q二P;wh订e(q-next!=NULL){q=q-next;i卄;}return (i);}void Order (Polynomial *p)/*多项式的升幕排序*/{Polynomial *q;int a, b, i=0;q=p;wh订e(q-next!=NULL){if(q-expq-next-exp)a=q-coef;b二q_exp;q-coef二q-next-coef; q-exp二q-next-〉exp;q-next-coef=a; q-〉next-〉exp二b;}q=q-next;i卄;}}void PaiXu (Polynomial *p)//重复调用升幕排序函数{int j;for (j=l;jPolyLength(p);j++)Order(p);}void AddPolyn(Polynomial *polya, Polynomial *polyb)/*两个一元多项式相加,将和多项式存放在多项式polya中,并将多项式ployb删除*/ {Polynomial *p, *q, *he, *temp;int sum;p二polya-〉next;/*令p指向polya多项式链表中的第一个结点*/ q=polyb-next;/*令q指向polyb多项式链表中的第一个结点*/ he=polya; /*令he指向和多项式polya*/wh订e(p!=NULLq!二NULL)/*当两个多项式均未扫描结束时,执行以下操作*/{if(p-expq-exp)/*若p指向的多项式指数小于q指的指数*/{he-next=p;/*将p结点加入到和多项式中*/he=he-next;p=p-next;/*将p指针后移一位*/}else if (p-exp=q-exp)/*若指数相等,则相应的系数相加*/{sum=p-coef+q-coef;if(sum!=0) /*系数和不为零,执行下列操作*/{p-coef=sum;he-next二p; he=he-next;p二p_next;temp=q-next;free(q);//q=q-next;q=temp;/*释放原q节点*/}else /*系数和为零,则删除结点p

文档评论(0)

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

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

1亿VIP精品文档

相关文档