测试数据(这里只测试了一组数据,小伙伴们可以自行测试其他数据喔)
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("多