前言
在学习完时间复杂度和空间复杂度后,我们便开始正式实现一些数据结构了。本篇文章实现的是线性表中的顺序表。
顺序表的实现与通讯录其实差不多。
我们首先要创建三个文件,一个头文件定义结构体类型和放函数声明,一个实现函数的功能的.c文件,还有主函数.c文件用于测试功能。
目录
一、头文件
从头文件中可以看到一些我们今天要实现的函数功能。头文件中包含了本篇博客我们将要实现的顺序表功能——增删查改.
二、函数实现
2.1 初始化节点
2.2 尾插数据
1.检查顺序表的大小
2.在下标为sz位置处插入数据
2.3 容量检查并扩容
我们在插入数据时,每次都需要检查顺序表中的容量,来避免表的大小造成程序错误。这时我们则可以将这个功能封装成一个函数,以便以后的多次调用。
2.4 头插数据
这里注意,顺序表插入数据要将表中已存放的数据整体向后移动一位,然后再将数据插入到下标为0的表中。
2.5 打印数据
在上面我们实现头插、尾插数据后,我们来将插入的数据打印一下。并看一下我们插入数据的效果。
接下来我们尾插6个数据,头插6个数据,这里插入12个数据还可以检测我们的扩容函数是否成功运行。
2.6 在pos位置插入数据
在实现了头插、尾插之后,我们再来实现一个可以在任意位置插入的函数。
这时我们可以想一下,我们可不可以复用这个函数来将头插、尾插的功能代替。
那在这个函数的眼里,头插——即是在0下标处插入数据;尾插即是在sz下标处插入数据。
这样直接就可以实现头插、尾插的功能了。
2.7 尾删数据
2.8 头删数据
功能实现检查
2.9 在pos位置删除
同样,插入可以复用,那我们使用删除一样可以在头删、尾插中复用。
2.10 查找数据
传入要查找的值,即可在表中进行查找,找到则返回下标,如果没找到就返回NULL;
2.11 修改数据
直接将待修改的下标和数据传入,即可以修改数据。
练习这些函数的功能可以帮我们更熟练的掌握线性表中的顺序表,对于我们马上学习的链表也有十分大的作用。
好了,本篇博客的内容到此就结束了,下篇博客我们会学习链表的相关操作,大家可以持续关注。
希望大家可以留个赞鼓励一下,我们下期再见。