C语言实现静态通讯录(顺序表):原理与完整代码解析

小满
小满
发布时间:2026-10-16| 8人浏览过
原创

使用C语言基于静态数组(顺序表)实现拥有1000个位置的通讯录。通过模块化设计(头文件声明、源文件实现、主函数控制),涵盖联系人信息的增、删、改、查、显示、清空及按姓名字符串排序功能。

项目架构与核心逻辑

为了实现清晰的代码结构,项目拆分为三个部分: Contact.h负责定义通讯录的结构体 Contact 和成员信息结构体 PeoInfo,以及所有函数的声明;test.c作为入口文件,处理菜单交互和主循环;Contact.c则集中实现所有具体的业务逻辑。

通讯录采用静态方式构建,容量固定为1000,一旦满员无法动态扩容。这种模式虽然简单直观,但存在空间利用率不高或缺席时浪费的问题,适合理解线性表的底层操作。

第1步:定义数据结构与接口

目的:建立数据模型并明确对外提供的功能范围。 文件:Contact.h

在头文件中,首先通过枚举 enum OP 定义菜单选项标识,避免使用魔法数字。随后定义两个核心结构体:

  • PeoInfo:包含姓名、性别、年龄、电话和住址的字符数组或整型字段。
  • Contact:包含一个最大容量为 MAX(1000) 的 PeoInfo 数组 data 以及记录当前有效人数的 size。
#define MAX 1000
typedef struct PeoInfo {
	char name[20];
	int age;
	// 其他字段...
}PeoInfo;

typedef struct Contact {
	PeoInfo data[MAX];
	int size;
}Contact;

第2步:初始化与菜单驱动

目的:确保程序运行时通讯录处于空状态,并通过死循环响应用户操作。 文件:test.c

主函数中创建 Contact con 变量。调用 init_contact(&con) 使用 memset 清零内存并将 size 设为0。接着进入 while(input != 0) 循环,每轮打印菜单并根据输入调用对应的处理函数。这种方式将复杂的逻辑隐藏在各函数内部,保持了主函数的简洁性。

第3步:核心功能的模块化实现

目的:分别实现通讯录的业务规则。 文件:Contact.c

1. 添加信息 (_add_contact): 检查当前 pcon->size < MAX 以避免越界。若未满,提示用户输入各项字段数据存入 pcon->data[pcon->size],并在成功后将 size 加1。

2. 删除指定信息 (_del_contact): 先调用辅助函数 find 查找目标姓名索引。若找到(返回值不为-1),为了提高效率,直接将数组最后一个有效元素覆盖到被删除的位置,然后将 size 减1。这种方法不需要移动中间的大量元素,时间复杂度极低,但会改变被删除元素之后的排序。

3. 查找 (_search_contact): 利用 strcmp 遍历数组比对姓名,返回匹配者的全部详细信息。

4. 修改 (_modify_contact): 通过 find 定位后,弹出子菜单让用户选择要修改的字段(如姓名、电话等)。利用 strcpy 或赋值语句更新对应位置,注意年龄需转换为字符串读取后再赋值给整型变量。

第4步:排序与数据管理

排序 (_sort_contact): 采用冒泡排序算法,按照姓名字符串的字典序(ASCII值)进行比较。由于涉及整个结构体的交换,代码中定义了临时结构体变量 PeoInfo tmp 来保存交换数据,而非简单的指针互换(因为这里使用的是定长数组元素,直接拷贝最稳妥)。

清空 (_clear_contact): 仅将 size 重置为0即可。在实际物理内存尚未释放的情况下,这表示逻辑上的清空,下次添加将从索引0开始覆盖原有数据。

总结

该示例展示了C语言中使用结构体和数组模拟数据库的基本形态。虽然在现代开发中我们更多使用动态内存管理和文件持久化,但静态通讯录对于掌握内存布局、指针传递以及基础算法(如查找与排序)至关重要。

以上就是C语言编程内存分配通讯录静态实现示例代码教程的详细内容,更多关于C语言实现静态通讯录的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。