提要:该篇博客是接续小篇上一篇博客 “顺序表专题” 来写的,如果没看过且对该篇文章感兴趣的小伙伴可以先看小编的上一篇文章哦!
该篇文章我将讲解顺序表的应用,即用顺序表模拟实现通讯录。
大家都知道,通讯录可以存储一些基本的联系人信息,如姓名,性别,年龄,电话,地址等,接下来我将用顺序表来模拟实现通讯录的增删查改。
因为我们实现的通讯录的底层逻辑是顺序表,所以对于通讯录的增删查改我们可以直接调用我在上一篇博客中写的修改数据的函数,所以我们只需要在上一篇博客写的代码的基础上在添加一个.c文件和.h文件用来模拟实现通讯录就行了
如上,我在上一次写的代码的基础上添加了一个Contact.c文件和一个Contact.h文件,其中.c文件用来写修改通讯录的函数,.h文件则写新的通讯录结构体和函数的声明;接下来我就要开始介绍通讯录函数的实现了!
一、创建通讯录成员的结构体并初始化通讯录
在我们前面创建的顺序表中,顺序表的每一个成员都是int类型,而我们现在是要创建通讯录,因此顺序表中的每一个成员我们就应该把他改成一个结构体,这个结构体中就存储了联系人数据如姓名,性别,年龄,电话,地址等,后续我们插入数据就是插入结构体数据,接下来我们就创建了通讯录成员的结构体,如下:
这里我创建了通讯录成员的结构体,并将struct personInfo改名为了perInfo,他存储了联系人的姓名,性别,年龄,电话,地址等数据;
且上图中我还声明了通讯录初始化的函数,它的参数为顺序表地址,当然若是小伙伴们想要方便区分可以将SL改名为contact(联系人),如下图:
这里需要注意的是,由于我们是要修改顺序表中的数据,而顺序表中的数据为我们刚刚创建的存储通讯录成员数据的结构体,所以顺序表的SeqList.h文件需要包含我们这个通讯录的.h文件"Contact.h"
而我要改名SL,则需要在"SeqList.h"文件中寻找"struct SeqList"结构体来更改,由于"SeqList.h"文件已经包含了"Contact.h",若"Contact.h"文件又来包含"SeqList.h"文件则会因为二者重复包含而发生错误;所以我们这里如果想要改名的话则需要在前面声明"struct SeqList"结构体,这样才能完成更改!
为了方便我们后续就直接将"struct SeqList " 改名为contact来使用了。
如上图,我们创建了contact类型”con“,对比我们之前创建的”sl“
其实con和sl没有什么不同,contact类型与SL类型也是相同的,只是我们这里为了更好区分,才将struct SeqList 类型改名为了contact。
接下来我来解释初始化通讯录函数,这个函数我们将在"Contact.c"文件中执行,如下图:
由于我们实际上是对顺序表进行修改,故我们直接调用我们之前已经实现好的初始化函数就可以了!
二、通讯录的增删查改
1.添加通讯录数据
这里在添加数据之前我们需要先输入联系人的相关数据,然后再根据自己的需求来选择插入方式就行了,如头插、尾插、在指定位置后插入等,这里同样也只需要调用我们之前实现写的插入数据的函数就可以了。
2.删除通讯录数据
请看以下代码:
如上,在删除数据之前我们肯定要先查找这个数据存不存在,所以我们又写了一个函数”FindByName“,如下图:
查找数据,我们对这个函数传入参数name,然后再遍历数组来查找存不存在这个名字,若存在则返回i(i代表这个人的数据在顺序表的数组中对应的下标,有了下标,我们就可以直接根据下标删除数据了),若不存在则返回-1;
若我们查找之后发现数据不存在,则提示不存在后,直接return;
若存在,那么我们就可以调用我们之前写的删除顺序表指定位置数据的函数了。
当然我们也可以直接进行头删或尾删。
3.通讯录的修改
看以下代码:
这里我们也需要首先调用FindByName函数来查找要修改的数据存不存在,然后我们再根据pos下标来修改数据就OK了。
4.通讯录的保存以及销毁
上面我们通讯录的增删查改就已经讲完了,最后一步是销毁我们的顺序表,但若是我们想将通讯录保存下来,我们也可以写一个代码将其保存到我们的文件中去。如下:
这里我们使用了文件操作函数来将我们的数据存入了”contact.txt“这个文件中,这里我就不详细解释上述文件操作函数了,因为文件操作函数小编已经在之前的博客中讲过了,感兴趣的小伙伴可以点个关注看看小编之前的博客!
接下来就是通讯录的销毁了,这里我们同样只用调用我们之前写的销毁顺序表的函数就行了;
到这里,我们的顺序表专题就算是彻底讲完了,觉得有收获的小伙伴别忘了给小编一个小小的点赞👍,感谢大家的支持!
点个关注,防止迷路,后续小编还会更新更多的关于C语言以及C++的知识,希望大家支持!