数据结构——多项式的加减乘法以及合并同类项的算法

测试数据(这里只测试了一组数据,小伙伴们可以自行测试其他数据喔)

2 2 3 3 4 4 0 0
1 2 2 2 0 0

1 2 1 1 0 0 
1 2 1 3 0 0

-1 2 -5 3 -4 2 0 0 
2 3 -4 2 -3 6 0 0

2 2 4 4 3 3 6 6 5 5 0 0 
8 7 4 5 6 1 1 3 3 5 0 0

1 2 3 4 5 6 7 8 0 0 
2 2 4 4 6 6 8 8 0 0

1 2 3 4 5 6 7 8 0 0
1 1 3 3 5 5 7 7 0 0

这里插入链表使用的是尾插法

加减法(其实减法和加法的思路差不多,都是判断指数相同与否,然后对系数实现加减法)

乘法主要是遍历两遍链表(因为一个多项式中每一项都要乘一遍另一个多项式的每一项,因此需要遍历两遍),系数相乘,指数相加

合并同类项(主要采用了迭代的思想,用head保存p1节点的下一节点,这样在p2遍历完后还可以回到p1的下一加点处)

打印多项式(只需要判断第一项的正负就可以啦,后面的都可以直接遍历)

​
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
struct node {
	int exp;//指数
	int coe;//系数
	struct node *next;
} ;
typedef struct node *List;

struct node *create();
struct node *insert(List L);
struct node *add(List L1,List L2,List L3);
struct node *sub(List L1,List L2,List L3);
struct node *mul(List L1,List L2,List L3);
void print(List L);
List merge(List L);

int main() {
	List L1=create();
	List L2=create();
	List L3;
	printf("请输入多项式1(输入以0 0为结尾):\n");
	insert(L1);
	printf("多
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值