多项式的表示
要表示这个多项式,需要表示两项:①系数,②指数
方法一:顺序存储结构直接表示
上面使用了数组来表示多项式,数组的下标表示指数,数组内存储系数,但是这会产生一个问题,那就是如果指数很大,那么怎么表示?
难道是开一个很大的数组?No,空间浪费太大了这样
方法二:顺序存储表示非零项
将非零项所涉及的两个信息,系数和指数存储起来,例如:
多项式相加
从头开始,比较两个多项式当前对应项的指数,例如:
比较过程:
① P1中(9,12)和P2中(26,19)比较,19大,取(26,19)放入P3
② P1中(9,12)和P2中(-4,8)比较,12比较大,取(9,12)放入P3
③ P1中(15,8)和P2中(-4,8)比较,8=8,则15-4=11,将(11,8)放入P3,以此类推,得到结果如下
方法三:链表结构存储非零项
链表中每个结点存储多项式中的一个非零项,包括系数和指数两个数据域
以及一个指针域
typedef struct PolyNode *Polynomial;
struct PolyNode {
int coef;
int expon;
Polynomial link;
}