使用顺序表实现个人通讯录管理

需积分: 30 12 下载量 35 浏览量 更新于2024-09-12 2 收藏 35KB DOC 举报
"使用顺序表实现简单的通讯录系统,包括数据结构、添加、显示和删除功能。" 在本文中,我们将探讨如何使用顺序表来创建一个基本的通讯录系统。顺序表是一种线性数据结构,其中元素按照它们被添加的顺序进行存储。在这个通讯录系统中,每个联系人的信息(如姓名、街道、城市、邮编和国家)被封装在一个名为`message`的结构体中,然后这个结构体被存储在一个固定大小的数组`messagebook`中。 首先,我们定义了一个结构体`message`,它包含以下字段: - `name`:存储联系人姓名,最大长度为`MAXI`个字符。 - `street`:存储街道名,最大长度同样为`MAXI`个字符。 - `cty`:存储城市名,最大长度为`MAXI`个字符。 - `eip`:存储邮政编码,类型为整型。 - `state`:存储国家名,最大长度为`MAXI`个字符。 接下来,我们有一个全局变量`n`,用于记录当前通讯录中存储的联系人数量。通讯录的核心功能包括: 1. **新建信息**:`enter()`函数用于获取用户输入的联系人信息,并创建一个新的`message`结构体。用户依次输入姓名、街道、城市、邮编和国家,然后函数返回新建的联系人信息。 2. **显示所有信息**:`display()`函数遍历整个`messagebook`数组,并打印出所有联系人的信息。它使用一个循环来访问每个元素,并打印出对应的姓名、街道、城市、邮编和国家。 3. **插入信息**:`dig()`函数将新建的联系人信息插入到已有的顺序表中。首先,它会检查数组中是否存在相同姓名的联系人,如果找到,则不执行插入操作。否则,会将所有后续的联系人向后移动一位,然后将新信息插入到适当的位置。最后,`n`值增加,表示添加了一个新的联系人。 4. **删除信息**:`del()`函数接收一个姓名作为参数,用于查找并删除具有该姓名的联系人。如果找到匹配的联系人,它会将其从数组中移除,并将所有后续的联系人向前移动一位,填补空缺。请注意,这个函数并未更新`n`值,因此在实际应用中,需要在调用此函数后手动更新`n`,以反映通讯录中的实际联系人数。 在实际的系统中,可能还需要添加其他功能,如搜索特定联系人、修改联系人信息等。同时,为了防止数组溢出,可以考虑使用动态内存分配来扩展数组大小。此外,为了提高效率和用户体验,可以使用二分查找等方法来改进查找和删除操作。但在这个基础版本中,顺序表简单易懂,适合初学者理解数据结构在实际问题中的应用。