顺序表的应用——(通讯录)

目录

前提须知:

通讯录的结构:

通讯录的建立:

顺序表的重命名:

 顺序表数据类型的更改:

使用通讯录结构体新名字,进行类型重命名的问题:

头文件的添加:

通讯录的初始化和销毁:

 头文件部分:

源文件部分:

​编辑 

主函数部分:

添加联系人、删除联系人、修改联系人、查看通讯录、查找联系人: 

头文件声明部分:

 添加联系人:

源文件部分: 

 

主函数部分:

删除联系人: 

查找函数: 

源文件部分:

主函数部分:

​编辑 

 查看通讯录:

源文件:

图例: 

 主函数部分:



前提须知:

这是建立在之前顺序表的基础上完成的。

顺序表的简单介绍_明 日 香的博客-CSDN博客


通讯录的结构:

  • 如图所示:
  • 通讯录的结构是建立在顺序表上的,或者说顺序表内每一个元素其实都被一个结构体代替,这个结构体的内部成员是:姓名、性别、年龄、电话、住址。
  • 所以,我们这次的通讯录需要用到顺序表的各类操作,如头插、尾插、头删、尾删等。

通讯录的建立:

  •  在建立通讯录之前,我们首先建立两个文件,一个是通讯录的头文件,一个是通讯录的源文件。
  • 其中,使用通讯录的源文件,进行函数调用,调用顺序表的各类操作。
  • 且在通讯录的头文件中,进行通讯录结构体的建立。

↑  在通讯录的头文件中 建立 通讯录的结构体,并且为了使用方便,将通讯录 结构体 进行typedef重命名 为 CInfo 

顺序表的重命名:

  • 因为我们的通讯录底层还是需要使用顺序表进行完成的,所以我们在通讯录中重新定义顺序表的名字,以此方便我们进行查看。(在通讯录头文件中完成)
  • 顺序表的简单介绍_明 日 香的博客-CSDN博客 

 顺序表数据类型的更改:

  • 对顺序表中的类型进行更改,原先顺序表的空间地址类型需要进行改变,变为通讯录结构体类型
  • 同时,注意因为在通讯录头文件中,我们对通讯录结构体进行typedef重命名了,但是这里的类型重命名修改,要使用通讯录结构体的原名,否则会出错! 

使用通讯录结构体新名字,进行类型重命名的问题:

因为结构体中,字符和字符之间不能使用==进行比较是否相等! 

头文件的添加:

  • 分别在  顺序表的头文件   和  通讯录的源文件添加  通讯录的头文件 ! 

通讯录的初始化和销毁:

 头文件部分:

  • contact* 是指通讯录结构体类型的指针,或者说是顺序表的指针类型,因为我们在通讯录的头文件中进行了顺序表的重命名
  • pcon是顺序表的地址,因为通讯录的底层是顺序表,或者说通讯录就是顺序表,所以pcon指向的是顺序表的空间地址! 
  • pcon相当于顺序表中的sl ——顺序表的简单介绍_明 日 香的博客-CSDN博客

源文件部分:

  • 在通讯录的源文件中,分别调用了顺序表头文件中的初始化和销毁函数,而后顺序表的头文件又调用到了顺序表的源文件。 

主函数部分:

 

添加联系人、删除联系人、修改联系人、查看通讯录、查找联系人: 

头文件声明部分:

 添加联系人:

  •  进行联系人的添加,需要按照通讯录的结构进行添加。

源文件部分: 

  • CInfo info;  前者是通讯录结构体重命名后的名字 ,后者是通讯录结构体在这个函数内创造的变量 
  • 进行在通讯录中插入数据,这里使用的是尾插
  • 注意,这里的pcon指向的是顺序表,因为之前将顺序表重新命名了,在通讯录头文件中
  • 注意,只有年龄不是字符数组类型,所以需要取地址符号&

主函数部分:

 

删除联系人: 

  • 在此之前我们先设定一个查找联系人是否存在的函数

查找函数: 

  • 因为字符不能直接使用==所以我们使用函数strcmp进行字符和字符之间的对比
  • pcon->size表示的是顺序表这个数组的大小,因为顺序表是数组,所以在进行数组循环时,是不能超过数组大小这个数的。
  • 解释一下,这里pcon->a[i].name 中 [i]的原因是:因为顺序表这个数组中的每一个元素都是一个结构体,从而构成了一个通讯录,所以就相当于这个下标位置的结构体中的name成员的内容。
  • return i;和return -1 ;前者是返回下标,后者是返回-1 因为数组是没有-1这个下标位置所代表的元素的。

源文件部分:

  • 删除联系人调用的是之前 顺序表源文件中的 任意位置删除数据 的函数 
  • 使用findiex 接收查找函数传来的下标,并且进行判断,判断成功则需要删除联系人不存在,失败则需要删除的联系人存在。

主函数部分:

 查看通讯录:

  • 查看通讯录其实就是打印通讯录

源文件:

  • 这里是准备使用表格的形式进行打印 
图例: 

 

  • 使用循环,进行以此的打印,类似于打印数组的每一个元素,只不过这个数组的每一个元素都是结构体,所以相当于打印数组中每一个结构体类型元素的结构体成员。 

 主函数部分:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/154714.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言重点突破(2)指针(二)

本章重点 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 1. 字符指针 在我的前一章节,我们提到指针也有类型的区分,有整型指针,浮点型指针,下面我们讲讲字符指针 字符指针的用法通常是将一个字符变量的地址存…

企业安全隐患排查治理系统—隐患上报、整改

安全生产隐患排查治理系统,涵盖了安全隐患排查整治工作的各项基本内容,能对隐患排查整治信息及时、有效地进行跟踪、整改,并将统计数据及时上报。该系统主要分为以下四个模块: 企业信息管理。通过手机扫码即可查询该企业主要风险点…

uniapp上echarts地图钻取

1: 预期效果 通过切换地图 , 实现地图的钻取效果 2: 实现原理以及核心方法/参数 一开始是想利用更换地图数据的形式进行地图钻取 , 这就意味着我们需要准备全国30多个省份的地图数据 , 由于一开始考虑需要适配小程序端 , 如此多的地图文件增加了程序的体积 , 如果使用接口调…

VALSE2023-快速总结

会议快速总结 1. 前言2. 热点词2.1 自监督预训练2.2 MIM(Masked Image Modeling)2.3 MAE(Masked Autoencoders)2.4 clip(Contrastive Language-Image Pre-Training)模型2.5 对比学习2.6 扩散模型(diffustion model)2.7 Nerf&#…

智慧工地:助力数字建造、智慧建造、安全建造、绿色建造

智慧工地管理系统融合计算机技术、物联网、视频处理、大数据、云计算等,为工程项目管理提供先进的技术手段,构建施工现场智能监控系统,有效弥补传统监理中的缺陷,对人、机、料、法、环境的管理由原来的被动监督变成全方位的主动管…

Unity 设置Inspect上问号的跳转链接

设置Inspect上问号的跳转链接 只需要在Class上添加特性:HelpURL即可!

STM32使用HAL库驱动TA6932数码管驱动芯片

TA6932介绍 8段16位,支持共阴共阳LED数码管。 2、STM32CUBEMX配置引脚 推挽配置即可。 3、头文件 /******************************************************************************************** * TA6932:8段16位数码管驱动 *******************…

计算机竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

git多分支、git远程仓库、ssh方式连接远程仓库、协同开发(避免冲突)、解决协同冲突(多人在同一分支开发、 合并分支)

1 git多分支 2 git远程仓库 2.1 普通开发者,使用流程 3 ssh方式连接远程仓库 4 协同开发 4.1 避免冲突 4.2 协同开发 5 解决协同冲突 5.1 多人在同一分支开发 5.2 合并分支 1 git多分支 ## 命令操作分支-1 创建分支git branch dev-2 查看分支git branch-3 分…

uni-app:文本超出部分用省略号表示

效果 前 后 核心代码 white-space: nowrap; /* 强制不换行 */ text-overflow: ellipsis; /* 超过部分省略号代替 */ overflow: hidden; /* 必须同时设置overflow:hidden才能生效 */ 完整代码 <template><view><view class"all_style"><view c…

Maven 自动化构建

自动化构建定义了这样一种场景: 在一个项目成功构建完成后&#xff0c;其相关的依赖工程即开始构建&#xff0c;这样可以保证其依赖项目的稳定。 比如一个团队正在开发一个项目 bus-core-api&#xff0c; 并且有其他两个项目 app-web-ui 和 app-desktop-ui 依赖于这个项目。 …

云剪辑解决方案,支持云端剪辑私有化部署

在当今的商业环境中&#xff0c;视频已经成为了企业宣传和品牌推广的重要工具。然而&#xff0c;视频制作技术开发部署的成本和复杂性却让许多企业望而却步。为了解决这个问题&#xff0c;美摄科技推出了云剪辑解决方案&#xff0c;这是一款专为企业设计的高效视频剪辑技术服务…

SQL:left join、right join 究竟什么区别?

1、SQL join 分三种 1&#xff09;inner join&#xff08;内连接&#xff0c;也叫等值连接&#xff09; 显示两个表中有联系的所有数据&#xff0c;是默认方式。 2&#xff09;cross join&#xff08;交叉连接&#xff09; 两个表格做笛卡尔积&#xff0c;显示的数据行数是…

发行版兴趣小组季度动态:Anolis OS 支持大热 AI 软件栈,引入社区合作安全修复流程

发行版兴趣小组&#xff08;Special Interest Group&#xff09; &#xff1a;旨在为龙蜥社区构建、发布和维护一个稳定的操作系统发行版。 秋天的季节&#xff0c;发行版兴趣小组在 AI、安全、国产 OS 领域同样也是硕果累累。一起来看一下第三季度发行版兴趣小组的成果总结有…

CrossOver2024中文免费版虚拟机软件

苹果笔记本不能用windows吗&#xff0c;让苹果电脑支持win系统&#xff0c;是很多苹果用户关心的问题。苹果笔记本是指使用macOS操作系统的苹果公司生产的笔记本电脑&#xff0c;而windows是微软公司开发的另一种操作系统。两者有什么区别&#xff0c;如何在苹果笔记本上安装和…

项目进展(十)-解决ADS1285在调试时出现的问题

一、解决大坑 在项目进展&#xff08;九&#xff09;-完善ADS1285代码这边博客中&#xff0c;看似解决了问题&#xff0c;可以去读数据&#xff0c;但是其实是给自己挖大坑&#xff0c;这边博客就是来填坑的。   首先呢&#xff0c;上篇博客说的是用0x12指令来读取数据&#…

生产环境中常用Linux命令

太简单的我就不讲解啦,浪费时间,直接将生产中常用的 文章目录 1.总纲2.整机 top3.CPU vmstat3. 内存 free4. 硬盘: df5. 磁盘IO iostat6. 网络IO ifstat7: 内存过高的情景排查 1.总纲 整机:topcpu:vmstat内存:free硬盘:df磁盘io: iostat网络io:ifstat 2.整机 top 首先们要查…

vue自定义防抖指令

main.js中 Vue.directive(throttle, {bind: (el, binding) > {let throttleTime binding.value; // 防抖时间if (!throttleTime) { // 用户若不设置防抖时间&#xff0c;则默认2sthrottleTime 2000;}let cbFun;el.addEventListener(click, event > {if (!cbFun) { // …

apifox的使用以及和idea集成

apifox 简介 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;定位 Postman Swagger Mock JMeter&#xff0c;由此可见apifox集功能于一身&#xff0c;极大的提升了我们开发的效率&#xff0c;不用再为postman网络连接失败而发愁&…

节能减排 | AIRIOT智慧工厂节能管理解决方案

工厂作为高能耗的生产型企业&#xff0c;降低能耗和提升资源利用率方面就显得很重要&#xff0c;对实施国家倡导的节能降耗、绿色发展有着很大程度上的必要性。然而&#xff0c;工厂能源管理从传统手段向智能化升级转型的过程中&#xff0c;企业也不可避免的面临一些痛点和挑战…