17、数据结构记之十七链表实现多项式.docxVIP

17、数据结构记之十七链表实现多项式.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文档。上传文档
查看更多
17、数据结构记之十七链表实现多项式

17、蛤蟆的数据结构笔记之十七链表实现多项式本篇名言:“人生不是一种享乐,而是一桩十分沉重的工作。”列夫托尔斯泰。栈的应用在上面中基本覆盖了很多,接下去我们来补充下链表在多项式实现中的例子。多项式这个问题是符号多项式的处理问题,已经成为表处理中的一个经典例子。把每项表示为一个结点,该结点包括系数域、指数域和指向下一项的指针。类型申明如下:typedef struct linklist{int coef;//系数int exp; //指数struct linklist *next;}nodelink;基本算法从两个链表开始比较多项式的各个项,如果相同则相加,如果不相同,则备份高指数的,以此类推。Main函数主函数如下,创建两个多项式,得到如下图所示:void main(){nodelink *heada,*headb,*headc;heada=create();printhead(heada);headb=create();printhead(headb);headc=ADD(heada,headb);printf(相加后的的链表为:\n);printhead(headc);}如下图1所示:源码#includestdio.h#includemalloc.htypedef struct linklist{int coef;//系数int exp; //指数struct linklist *next;}nodelink;nodelink *create()//创建单链表{nodelink *head,*s,*t;int c,e;head=(nodelink *)malloc(sizeof(nodelink));//哨兵头结点head-next=NULL;t=head;//始终指向单链表的尾部printf(请输入c和e的值,当系数e等于-1为结束条件:\n);scanf(%d%d,c,e);while(e!=-1){s=(nodelink *)malloc(sizeof(nodelink));s-coef=c;s-exp=e;s-next=NULL;t-next=s;t=s;printf(请继续输入c和e的值,当系数e等于-1为结束条件:\n);scanf(%d%d,c,e);}return head;}void printhead(nodelink *head)//输出连表数据{nodelink *phead;int pcount=1;//结点计数器phead=head-next;//指向第一个元素结点while(phead!=NULL){printf(第%d个结点的系数和指数分别为:,pcount);printf(%2d%4d\n,phead-coef,phead-exp);phead=phead-next;pcount++;}printf(\n);}nodelink *ADD(nodelink *heada,nodelink *headb)//实现多项式相加{nodelink *p,*q,*prea,*preb,*temp;int sum;p=heada-next;//分别使p和q指向第一个元素结点q=headb-next;prea=heada;free(headb);//释放headb链表的头结点while(p!=NULLq!=NULL){if(p-expq-exp){prea=p;p=p-next;}else if(p-exp==q-exp){sum=p-coef+q-coef;if(sum!=0){p-coef=sum;preb=q;prea=p;p=p-next;q=q-next;free(preb);}else//如果和为零{temp=p;p=p-next;prea-next=p;free(temp);preb=q;q=q-next;free(preb);}}else //若p-exp大于q-exp{temp = q-next;prea-next=q;q-next =p;q = temp;}}if(q!=NULL)prea-next=q;return heada;}void main(){nodelink *heada,*headb,*headc;heada=create();printhead(heada);headb=create();printhead(headb);headc=ADD(heada,headb);printf(相加后的的链表为:\n);printhead(headc);}road, are the structural road traffic within the city. In addition, suitable for high speed, and high-speed, S206,

您可能关注的文档

文档评论(0)

pij541 + 关注
文档贡献者

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

1亿VIP精品文档

相关文档