题目摘自数据结构题集(C语言版) p20 Algo2.39-2.40
顺序存储结构
稀疏多项式的顺序存储结构SqPoly定义如下:typedef struct {
int coef;
int exp;
}PolyTerm;
typedef struct
{
PolyTerm * e;
int length;
}SqPoly;
2.39已知稀疏多项式,其中n=em>em-1>...>e1>=0,ci!=0,m>=1。试采用存储量同多项式项数m成正比的顺序存储结构,编写求Pn(x0)的算法,x0为给定值,并分析算法的时间复杂度。
2.40 条件同2.39,编写求P(x)=Pn1(x)-Pn2(x)的算法,将结果多项式存放在新辟的空间中,并分析你的算法的时间复杂度。
思路分析:2.39-从头遍历到表尾,x的指数次就是一个阶乘,不用另外的函数,直接写在算法中会更加节省时间。
2.40-类似于表的merge算法,这里指数是从大到小排列的(我是从小到大输入的,递增递减不影响结果),不需要考虑排序,设置两个指针,两个计数器i,j,遍历a,b表,循环条件i,j均小于各自表长。
按照exp大小分成两种情况,若不等,将指数更小的结点加入c中,该指针移位,若相等,计算新的coef,同时移位两个指针,并将新的coef,写入c中。(注意一下,a先遍历完的情况,因为是a-b,负号)
头文件
//Status.h
#pragma once
#def