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的每一项,相加其乘积结果。
单元多项式的节点结构类型是这样的:
- typedef struct node
- {
- float coef; //系数
- int expn; //指数
- struct node *next;
- }PolyNode; //多项式节点 polynomial node
- //多项式加法运算,结果保存在dest链表中
- int add_poly(List* dest, List** src)
- {
- List* head=dest;
- if( 0==list_cnt(dest) || 0==list_cnt(*src))
- {
- printf("无法进行多项式加法运算!/n");
- return LIST_ERROR;
- }
- while( NULL!=dest->next )
- {
- dest=dest->next;
- }
- dest->next=(*src)->next;
- //销毁*src的头节点,并置NULL
- free(*src);
- *src=NULL;
- sort_list(head);
- return LIST_OK;
- }