(四)数据结构之线性表的简单应用:多项式求和

本文介绍了如何使用不带头结点的单向链表来实现多项式的求和操作。通过设置两个指针遍历各自多项式,比较指数并进行相应的系数相加,最终将未遍历完的多项式剩余节点复制到结果多项式中。详细步骤包括基本数据结构的设计、多项式相加的具体算法以及示例代码的实现。
摘要由CSDN通过智能技术生成

1、基本思路

采用不带头结点的单向链表,按照指数递减的顺序排列各项。

算法思路:
a、两个指针P1和P2分别指向这两个多项式第一个结点,不断循环:
i、P1->expon == P2->expon : 系数相加,如果结果不为0,则作为多项式对应项系数,同时,P1和P2都分别指向下一项。
ii、P1->expon > P2->expon : 将P1的当前项存入多项式,并让P1指向下一项
iii、P1->expon < P2->expon :将P2的当前项存入结果多项式,并让P2指向下一项。
b、当某一多项式处理完后,将另一个多项式的所有结点依次复制到结果多项式中去。

2、具体实现

2.1 基本数据结构

/* 多项式的基本数据结构 */
typedef struct PolyNode 
{
	int coef; 			// 系数
	int expon; 			// 指数
	struct PolyNode *link; 	// 指向下一个节点的指针
}*Polynomial;

由于使用的是单链表的操作来实现具体的多项式求和问题,所以基本的插入操作可以参考这篇文章 http://blog.csdn.net/tech_pro/article/details/78011875的链式存储单向链表的简单实现。

2.2 多项式相加操作

/* 实现多项式P1和P2相加 */
Polynomial PolyAdd (Polynomial P1, Polynomial P2)
{
	Polynomial front, rear, temp;
	int sum;
	
	rear = (Polynomial) malloc(sizeof(str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值