一.数组的结构
定义一个结构体类型Polytype,MAXSIZE是它的大小设定为30
该结构体有三个参数,xi是存放多项式的系数,zhi是存放多项式的指数,cur存下一个节点的下标,形成一个静态链表(一条链中包含备用链表和实际链表)
#define MAXSIZE 30
typedef struct{
ElemType xi; //系数
int zhi; //指数
int cur; //下一个节点下标
}Polytype,Polyarr[MAXSIZE];
链表的初始化,把各个节点链在一起
void Init_polylist(Polytype *s)
分配节点函数,返回分配的节点下标
int Malloc(Polytype *s)
释放一个节点,把下表为k的结点还给备用链表,从头部插入
void Free(Polytype *s,int k)
输入链表的函数,并返回链表头的下标
int InitArr(Polytype * s)
输出链表函数,k是链表头下标
void Print(Polytype *s,int k)
多项式相加函数,a、b分别是链la、lb的头下标
int Merge_polylist(Polytype *la,Polytype *lb,Polytype *lc,int a,int b)
二.测试
用例1
用例2
三.运行时间分析
Merge_polylist函数的执行时间:O(la.len+lb.len)
Init_polylist函数的执行时间是:O(n)
Print函数的执行时间:O(s.len)
Malloc的执行时间:O(1)
Free的执行时间:O(1)