多项式的表示
一元多项式及其运算
-
顺序存储结构直接表示
a[i]=ai,aix^i。指数i为索引,而数组存储对应第i个项的系数。
每个分量代表系数。
但当表示多项式x+3x^2000,需要2001个分量,造成空间的浪费 -
顺序存储结构表示非零项
非零项aix^i:系数ai和指数i,可以将一个多项式堪称一个(ai,i)二元组的集合。
每个分量包含系数和指数。
结构数组:数组分量是由系数ai和指数i组成的结构。按指数大小有序存储,按递降顺序存储。
- 链表结构存储非零项
链表中的结点存储多项式中的一个非零项,包括系数和指数两个数据域以及一个指针域。
线性表(Linear List)
由同类型数据元素构成有序序列的线性结构。
基本操作有
void InitList(SqList &L); //初始化一个空线性表L
void GetElem(SqList L, int i, ElemType &e); // 根据位序i,返回相应的元素e
int LocateElem(SqList L, ElemType e, int (*compare)(ElemType, ElemType));//在线性表L中查找e的第一次出现位置
int ListInsert(SqList &L, int i, ElemType e);//在位序i前插入一个新元素X
int ListDelete(SqList &L, int i, ElemType &e);//删除指定位序i的元素
int ListLength(SqList L);//返回线性表L的长度n
#define MAX_LENGTH 50
#define LISTINCREMENT 100
typedef int ElemType;
typedef struct
{
ElemType *elem;//首地址
int length;//当前长度
int listsize;//最大长度
}SqList;
- 初始化(建立空的顺序表)
void InitList(SqList &L)//构造一个空的线性表L
{
L.length = 0;
L.listsize = MAX_LENGTH;
L.elem = (ElemType *)malloc(sizeof<