数据结构初涉----顺序表
有了我们之前共同学习的C做基础我们本文开始学习数据结构本文先从数据结构的基础-----顺序表开始介绍。顺序表的出现顺序表的基层原理其实就是数组但是数组用来存放数据可以遇到插入数据删除数据这些操作时我们得先计算此时数组中的元素个数再进行一系列的操作此过程比较麻烦数组就不够用了所以出现了顺序表这个概念在数组的基础上增加了一些增删查改的操作方法摇身一变成了顺序表。顺序表的物理与逻辑结构说到顺序表就不得不提线性表这个概念线性表是具有相同特性的数据结构的集合它的逻辑结构一定连续但是物理结构不一定连续由于顺序表的底层原理是数组所以说它的物理结构和逻辑结构都是连续的。顺序表的分类顺序表分为静态顺序表和动态顺序表两大类。静态顺序表动态顺序表从顺序表的结构中不难看出静态的顺序表是使用定长数组动态顺序表中是使用指针动态分配空间我们一般都会使用动态顺序表不仅空间是动态分配参数也是有利于顺序表的各种操作函数实现。在使用顺序表时我们不仅会在表中放入 int 型数据也会放入其他类型例如 charfloat 等等所以为了代码提高利用率我们使用 typedef 关键字来替换数据类型。顺序表的各种增删查改操作都是由函数来实现的我们实现出该功能的代码后将其封装为一个函数方便日后使用。顺序表的增删查改函数实现顺序表的初始化将结构体的各部分分别进行初始化...顺序表的销毁顺序表的插入在顺序表中插入数据时我们可以选择在顺序表的表头插入表尾以及选择一个随机位置插入根据需求来选择插入的位置那么根据以上这些情况思路如下1.插入空间是否被占用首先在插入数据之前我们要先将要插入的数据空间提前留出以方便结构体指针直接插入新数据那么在尾插中不存在这个问题直接将数据插入至顺序表尾部即可那么在头插和指定位置插入时我们要通过循环来将数据逐个移位此时需要注意数据是从后向前逐个移动不能够覆盖原本数据。2.指针指向空间是否充足能够容纳新插入数据若空间不充足时进行数据插入会导致程序数据会导致数据写入失败或者丢失所以在插入新数据之前我们要判断此时空间是否仍然充足不够时要进行空间扩容realloc--- 动态内存函数中介绍。3.在确定空间要进行扩容时一次增大多少才不会过于浪费空间若每次增容过小时每次有可能会重新开辟空间使得程序效率低下若每次增容过大时用不完但是一直在占用会一定程度上浪费空间那么增容一般是成倍的增加一般是2倍增加使得空间复杂度最低。4.在扩容时使用 realloc 函数需要注意些什么在介绍动态内存函数时我们介绍到主要有三点扩容时返回一个指向起始地址的指针那么此时的空间有可能会申请失败此时返回一个空指针为了防止将原本空间地址同时搞丢时我们要拿一个新指针来接收判断其并非是空指针标志着空间申请成功时将指针赋值使用。动态申请的空间在使用完之后必须要进行内存释放free函数。将空间释放之后此时指向该空间起始地址的指针变为空指针为了防止有野指针的出现要将指针及时置空。顺序表的头插顺序表的尾插当开始顺序表的尾插时你会发现只要是插入不论是在哪一个位置插入都需要判断空间是否充足代码会出现冗余现象所以我们将判断空间是否充足的功能封装为一个函数。顺序表的指定位置插入顺序表的删除顺序表的头删直接覆盖就删除记得 ps-size 更新顺序表的尾删顺序表的指定位置删除顺序表的打印打印顺序表的内容时只需要传值打印需要修改指针指向的内容时才需要传址调用。顺序表的查找查找元素成功则返回元素所在下标失败则返回-1。以上就是顺序表中所需要函数功能的封装源码实现以下为测试这些函数的功能以上为数据结构入门---顺序表的函数封装下篇即实现利用顺序表应用---通讯录项目。创作不易喜欢揪一键三连有问题欢迎评论区留言共同学习一起进步