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

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

如下图:

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

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

typedef struct node
{
	float coef;   //系数 
	int expn;     //指数 
	struct node *next;
}PolyNode;      //多项式节点 polynomial node 

多项式的加法我们提供了两种:

1.Polynomial polyAdd(Polynomial poly1, Polynomial poly2),把poly1和poly2相加得到一个新的多项式,相加的过程中poly1和poly2保持不变,不会被破坏。

2.void add(Polynomial poly1, Polynomial poly2),把poly2加到poly1上,相加的过程中poly2的节点会被利用上。结束后,poly2不存在了。

提供第一种加法,是为了保持poly1和poly2不变,以便进行下一次的运算。提供第二种加法,是为了运算结束后,内存不会泄露。

其它具体细节得看代码了:

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
	float coef;   //系数 
	int expn;     //指数 
	struct node *next;
}PolyNode;      //多项式节点 polynomial node 
typedef PolyNode* Polynomial;
Polynomial createPolynomial()   //创建多项式 
{
	PolyNode *p, *q, *head = (PolyNode *)malloc(sizeof(PolyNode));   //头节点 
	head->next = NULL;
	float coef;
	int expn;
	printf("输入该多项式每一项的系数和指数,每项一行,输入0 0结束ÿ
  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值