(1.2.1.5)链表的应用:单元多项式的加法、减法、乘法

Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm

 Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn

请实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。


使用链表来实现单元多项式的加法、减法、乘法。一个单元多项式的节点结构无非是这样的:系数域、指数域、链域。

如下图:

我们使用链表来模拟单元多项式的常见运算。其中,加法是其它运算的基础,减法:poly1-poly2=poly1+(-poly2),乘法:poly1*poly2,可用poly1乘以poly2的每一项,相加其乘积结果。

单元多项式的节点结构类型是这样的:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. typedef struct node  
  2. {  
  3.     float coef;   //系数   
  4.     int expn;     //指数   
  5.     struct node *next;  
  6. }PolyNode;      //多项式节点 polynomial node   


  1. //多项式加法运算,结果保存在dest链表中  
  2. int add_poly(List* dest, List** src)  
  3. {  
  4.     List* head=dest;      
  5.     if( 0==list_cnt(dest) || 0==list_cnt(*src))  
  6.     {  
  7.         printf("无法进行多项式加法运算!/n");  
  8.         return LIST_ERROR;  
  9.     }  
  10.     while( NULL!=dest->next )  
  11.     {  
  12.         dest=dest->next;       
  13.     }  
  14.     dest->next=(*src)->next;  
  15.       
  16.     //销毁*src的头节点,并置NULL  
  17.     free(*src);  
  18.     *src=NULL;  
  19.     sort_list(head);  
  20.     return LIST_OK;  
  21. }  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值