顺序表理解
顺序表的基础概念我们不多讲直入主题在我的理解中顺序表就是自定义变量结构体和数组的结合从而完善功能使得数组具有复杂的功能———————————————————————————————————————————一、头文件中的结构体定义为了支持多种数据类型如int、char、float等的灵活使用我们采用typedef定义数据类型。这样在需要修改类型时只需更改一处即可实现全局更新。同样地我们也对结构体使用typedef处理以提高代码编写的便捷性。二、顺序表的初始化与销毁1、在测试文件中定义一个结构体由于后续我们需要对定义的结构体sl进行操作并且希望操作后的数据保存下来所以在此处我们需要进行传址调用。在函数实现文件SL.c中完成顺序表的初始化和销毁操作初始化时由于顺序表尚未存储任何数据需将sl结构体中的arr成员设为空指针并将元素个数和容量均初始化为0。销毁时由于后续空间是通过realloc函数动态分配的需要使用free函数释放已申请的内存空间。ps最好在测试文件中调用函数以测试函数是否正确。三、顺序表空间的申请和检查在初始化阶段arr指针尚未分配内存空间仅作为空指针存在。因此需要执行内存分配操作。在SL.c文件中实现内存分配功能时需遵循以下步骤首先检查arr当前分配的空间是否足够存储数据。通过比较现有数据量与容量变量的值来判断若空间不足则需对arr进行扩容操作为确保函数运行安全性避免原始数据丢失创建临时变量存储现有数据所有操作均在临时变量上执行操作完成后将结果赋值回原变量最终完成扩容操作该实现同样适用于首次内存分配的情况ps在扩容时一般为每次两倍扩容四、尾插顾名思义尾插即将数据拼接在 “arr” 的尾部。为防止 “sl” 传入空指针可以用“assert函数”进行断言防止对后续运行产生影响。实现方式在对“arr”的空间完成检查后由于数组的下标从0开始计数那么 “size” 的数值大小永远比数组的最后下标大1所以在 “arr” 的 “size” 下标处进行赋值即可。五、头插将数据存入数组arr的首个位置。具体实现步骤检查arr的可用空间使用for循环将所有元素向后移动一位将新数据赋值给arr[0]最后将数组大小size加 1六、在任意位置插入数据参数pos表示待插入数据的下标位置。实现步骤参数校验检查pos是否在合法范围内验证数组arr是否有足够空间数据移位从数组末尾开始将pos之后的所有元素依次后移一位插入操作在pos位置写入新数据数据个数size自增七、在任意位置删除数据参数pos表示待删除数据的下标位置。实现步骤参数校验检查pos是否在合法范围内验证数组arr是否有足够空间数据移位从数组“pos”下标处开始将之后的元素依次向前移一位插入操作数据个数size自减八、数据查找参数pos表示你要查找的数据。实现步骤使用for循环遍历数组检查目标值pos是否存在若找到匹配项返回当前索引值i若未找到返回0函数返回类型为int注意事项调用该函数时需额外添加判断逻辑确认是否找到目标值返回的i值即为目标数据在数组中的下标位置编辑———————————————————————————————————————————通过以上内容相信你已经对顺序表的原理和实现有了清晰的认识。学习编程的最佳方式就是实践建议你亲自动手编写代码在理清思路的基础上尝试实现属于自己的顺序表实现方案。