顺序表应用——通讯录

一、 回顾上篇所讲

顺序表:
两个文件 .h和.c
.h文件有所需的标准库的头文件
在这里插入图片描述

定义动态顺序表的结构体——三个成员
1.指针,指针的类型重定义,方便类型替换
2.有效数据的个数
3.空间大小
在增删查改之前要比较size(有效数据的个数)和capacity(空间大小) 的大小关系

在这里插入图片描述
在这里插入图片描述
动态申请的空间,一定要销毁掉

二、连接上篇再讲一个顺序表的知识点

2.1特定位置之前插入

在这里插入图片描述

注意:size的概念,他是有效数据的下一个位置(注意是下一个,不是最后一个有效数据)

在这里插入图片描述
size在3后面一个,不是在3那里

pos及以后的数据向后移动一位

在这里插入图片描述

2.2特定位置删除数据

在这里插入图片描述
pos处的数据删除后,后面的数据向前移动一位

在这里插入图片描述
注意:先移动3,在移动4,依次向后移动元素

在这里插入图片描述

2.3顺序表的查找

在这里插入图片描述

逻辑还是挺简单的

到现在为止顺序表的所有代码都介绍完了

三、基于顺序表实现通讯录

在这里插入图片描述

顺序表可以存储的数据类型:int、char、自定义类型,比如结构体

seqlist.h的文件里要包含contact.h,但是contact.h也要包含seqlist.h,这样就矛盾了,头文件是不能交叉包含的,所以需要前置声明

在这里插入图片描述

3.1通讯录的用法

在这里插入图片描述
在这里插入图片描述
注意:头文件是不能交叉包含的
所以在第一张代码,没有写成typedef struct peoinfo,是因为提前包含了通讯录的头文件
第二张,必须写成typedef struct seqlist contact ,就是因为不能交叉包含,所以必须前置声明

再次明确一个概念:
关于scanf的语法,第一个参数是占位符,第二个参数是地址,所以对于普通变量,是一定要有取地址符来获取地址的,但是第二个参数是数组名时就不用取地址符了,因为数组名就是首元素的地址

在这里插入图片描述
在这里插入图片描述
删除联系人数据
找到下标就等价于特定位置删除
在这里插入图片描述

3.2展示通讯录的数据

在这里插入图片描述
在这里插入图片描述
效果展示

在这里插入图片描述
但是联系人的数据并没有和表头对齐

可以利用制表符或者占位符,左对齐或是右对齐

占位符的写法
在这里插入图片描述
占位符前加数字,表示宽度

制表符写法就是在打印前面加上制表符 \t

在这里插入图片描述
通讯录所有功能全部实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值