第一块:对基本变量结构的认识
2行: 重定义 Elemtype(element type)原因:方便顺序表表中元素的数据元素类型可变
5行:使用指针变量 *slist原因:可变长顺序表便意味着系统给顺序表分配的空间可变,但当我们元素少时可能就分配一小块空间,要增加元素个数后面如果没有空间可分配,系统变会开辟一片新的连续存储空间 。这片空间我们不能给一个明确的名称,但是可以用一个指针变量指向这一块空间第一个元素的基地址
第二块:顺序表的初始化
一定要有返回值,可以没有输入一定要有输出
只有初始化return 返回 1整个顺序表才可以继续进行操作 (算法的健壮性)
13行为何参数表用 *L :C语言本质上只有值传递,但是如果运用指针传递地址便可以做到引用传递的效果,我们对形参L进行了处理便可对实参 Sq顺序表进行初始化
14行动态内存分配的解释:malloc函数中的右()中的内容是申请空间的字节数 init_size为所需空间,sizeof()计算每片空间的字节数。malloc前面的()是强制类型转换,由于顺序表中元素均为Elemtype型且L->slist为指针变量 故强制类型转换为 Elemtype型的指针变量
后续补上 15 !L->slist L!=NULL(L)两种表示意思相同
第三块:顺序表的插入
无需初始化一批数据的原因:一开始的插入本质上就是对最开始的数据初始化
插入算法: 1.判断插入位置是否合理
2.判断顺序表元素个数是否已经到达总长,如果是变要为顺序表重新分配空间
3.插入算法的执行
4.每插入一个新元素元素个数+1
5.要有返回值,不然无法判断插入是否成功
realloc函数理解: realloc()相比较于malloc()在于()内多写了一个L->slist
原因:malloc是对顺序表初始化一片空间,而realloc是对已经初始化的一片空间的大小进行改动,所以函数内要对初始化的空间进行说明