
目录线性表案例例1一元多项式例2稀疏多项式链式存储结构例3图书信息系统小结线性表的类型定义C基本操作线性表的顺序表示和实现1结构体和数组实现表示线性表类C语言有关操作malloc(m)动态内存分配函数类C语言有关操作引用类型线性表的顺序表示和实现2线性表的基本操作线性表的初始化销毁线性表清空线性表求线性表L长度判断线性表L是否为空顺序表的取值随机存取查找线性表举例案例例1一元多项式例2稀疏多项式链式存储结构例3图书信息系统小结线性表的类型定义C基本操作线性表的顺序表示和实现1结构体和数组实现表示线性表类C语言有关操作malloc(m)动态内存分配函数类C语言有关操作C的new相当于C的ADT都是类型定义的关键词引用类型线性表的顺序表示和实现2L.elem 就是该结构体中的指针成员。 在没有初始化之前L.elem 的值是随机的野指针不能直接使用。 正确用法是先为它分配内存例如 L.elem (ElemType*)malloc(MAXSIZE * sizeof(ElemType)); L.length 0; 之后 L.elem 就指向了分配到的数组的首元素你可以通过 L.elem[0]、L.elem[1] 等方式访问元素就像使用数组一样。 在正确初始化之后L.elem 存储的就是顺序表存储空间的“首地址”即基地址。线性表的基本操作意思是之后的一般情况是这样。不代表ok就是1需要自己预定义线性表的初始化Status InitList_Sq(SqList L){ //构造一个空的顺序表L初始化函数参数用的引用型 L.elem new ElemType[MAXSIZE]; //动态分配的办法为顺序表的数组分配空间获得数组的基地址并赋值 if(!L.elem) exit(OVERFLOW); //异常处理如果存储分配失败也就是空值那么就退出返回OVERFLOW溢出也就是-2 L.length0; //初始化空表长度为0 return OK; //完成后返回OK也就是1 } statue是返回状态值销毁线性表void DestroyList(SqList L) { if (L.elem) delete L.elem; //释放存储空间 }清空线性表void ClearList(SqList L){ L.length0; //将线性表的长度置为0 }求线性表L长度int GetLength(SqList L){ return (L.length); }判断线性表L是否为空int IsEmpty(SqList L){ if (L.length 0) return 1; else return 0; }顺序表的取值随机存取查找