C语言可变长顺序表学习 (一个编程笨蛋写的~)

第一块:对基本变量结构的认识

C语言可变长顺序表学习 (一个编程笨蛋写的~)

 

 

  2行: 重定义 Elemtype(element type)原因:方便顺序表表中元素的数据元素类型可变

  5行:使用指针变量 *slist原因:可变长顺序表便意味着系统给顺序表分配的空间可变,但当我们元素少时可能就分配一小块空间,要增加元素个数后面如果没有空间可分配,系统变会开辟一片新的连续存储空间 。这片空间我们不能给一个明确的名称,但是可以用一个指针变量指向这一块空间第一个元素的基地址

 第二块:顺序表的初始化

一定要有返回值,可以没有输入一定要有输出

只有初始化return 返回 1整个顺序表才可以继续进行操作 (算法的健壮性)C语言可变长顺序表学习 (一个编程笨蛋写的~)

  13行为何参数表用 *L :C语言本质上只有值传递,但是如果运用指针传递地址便可以做到引用传递的效果,我们对形参L进行了处理便可对实参 Sq顺序表进行初始化

14行动态内存分配的解释:malloc函数中的右()中的内容是申请空间的字节数 init_size为所需空间,sizeof()计算每片空间的字节数。malloc前面的()是强制类型转换,由于顺序表中元素均为Elemtype型且L->slist为指针变量 故强制类型转换为 Elemtype型的指针变量

后续补上 15 !L->slist   L!=NULL(L)两种表示意思相同

第三块:顺序表的插入

无需初始化一批数据的原因:一开始的插入本质上就是对最开始的数据初始化

C语言可变长顺序表学习 (一个编程笨蛋写的~)

 插入算法: 1.判断插入位置是否合理

                    2.判断顺序表元素个数是否已经到达总长,如果是变要为顺序表重新分配空间

                    3.插入算法的执行

                    4.每插入一个新元素元素个数+1

                    5.要有返回值,不然无法判断插入是否成功

   realloc函数理解: realloc()相比较于malloc()在于()内多写了一个L->slist 

                                原因:malloc是对顺序表初始化一片空间,而realloc是对已经初始化的一片空间的大小进行改动,所以函数内要对初始化的空间进行说明

 

 

上一篇:phpStudy 2014的Apache虚拟主机配置


下一篇:/usr/bin/ld: dmrg_ota hidden symbol `curl_slist_append‘ in libcurl.a(libcurl_la-slist.o) is referenc