// 多项式的加减乘除
#include <stdio.h>
#include <stdlib.h>
#define Max 50
typedef struct polyList{ //* 多项式内容
float coef; //* 系数
int power; //* 次方
struct polyList *nextPtr; //* 下一项
}PolyList;
typedef PolyList * PolyListPtr;
void vacuum(char a[]){ //* 将 array 清空
int i;
for (i = 0; a[i] != ' '; i++)
a[i] = ' ';
}
int findUp(float b[]){ //* 找最高次项
int i;
for (i = Max-1; i >= 0; i--)
if (b[i] != 0) //* 将第一个系数不为 0 的次方回传
return i;
return -1;//* 数列为 0,return -1
}
void insertPtr(PolyListPtr *pPtr, float cof, int pow){ //* 插入指标(由高到低)
PolyListPtr newPtr; //* 当输入资料的指标
PolyListPtr runPtr; //* 与输入比较的指标
PolyListPtr prePtr; //* runPtr 前面的指标
newPtr = malloc(sizeof(PolyList));
if (newPtr != NULL){
newPtr->coef = cof;
newPtr->power = pow;
if (*pPtr == NULL || (*pPtr)->power < pow){ //* 没有资料或第一个资料的次方较小时,将输入放在第一个
newPtr->nextPtr = *pPtr;
*pPtr = newPtr;
} else {
for (runPtr = *pPtr, prePtr = NULL; ; prePtr = runPtr, runPtr = runPtr->nextPtr){
if (runPtr->power == pow){ //* 次方相同,系数相加
runPtr->coef += cof;
if ((runPtr->coef) == 0){ //* 如果加后系数为 0
if (runPtr == *pPtr){ //* 第一个资料的话改变 pPtr