和数组实现的思想一样,唯一的优点就是不会浪费空间,链表不懂得可以看第十四篇文章和一二篇文章
#include <stdio.h>
#include <stdlib.h>
//定义多项式链表存储结构
typedef struct PNode
{
int factor; //系数
int power; //次数 | 幂
PNode *next; //指向下一个单项式
}PNode, *Polynomial;
//初始化多项式链表
void InitPoly(Polynomial *poly)
{
(*poly) = (Polynomial)malloc(sizeof(PNode));
(*poly) -> factor = 0;
(*poly) -> power = 0;
(*poly) -> next = NULL;
}
//创建多项式,提供多项式的存储结构和创建数据(第一存储系数,第二个存储次数),数组长度
void CreatePoly(Polynomial poly, int multiArray[][2], int len)
{
for(int i = 0; i < len; i++)
{
Polynomial tmp = (Polynomial)malloc(sizeof(PNode));
tmp -> factor = multiArray[i][0];
tmp -> power = multiArray[i][1];
tmp -> next = NULL;
poly -> next = tmp;
poly = tmp;
}
}
//两个多项式相加
void AddPoly(Polynomial poly1, Polynomial poly2, Polynomial poly3)
{
Polynomial tmp1 =