C语言实现动态链表构建通讯录

需积分: 16 4 下载量 59 浏览量 更新于2024-09-14 2 收藏 30KB DOC 举报
"该资源是关于使用C语言通过动态链表实现通讯录的代码示例。它涉及到链表数据结构、结构体以及文件操作。代码首先定义了一个静态的`persons`数组来存储通讯录数据,然后定义了一个链表节点结构`lnode`,用于构建动态链表。此外,还定义了头指针`head`和尾指针`r`,以及一系列临时指针用于操作链表。`creat()`函数用于从文件`people.txt`中读取数据并构建链表。如果文件不存在,程序会创建一个新的文件。" 在C语言中,动态链表是一种灵活的数据结构,可以方便地进行插入和删除操作。在这个例子中,通讯录的每个联系人信息被表示为一个结构体,包括姓名、地址和电话号码。结构体`persons`用来存储从文件中读取的数据,而`lnode`结构体则用于构建链表,包含姓名、地址、电话和指向下一个节点的指针。 为了实现通讯录功能,我们首先需要创建一个空链表。在这里,`head`初始化为`NULL`,表示链表为空。`r`也是空指针,用于跟踪链表的尾部。当从文件中读取到联系人信息时,通过`malloc()`函数动态分配内存创建新的链表节点,然后将数据复制到新节点中。如果链表为空,新节点直接成为头节点;否则,新节点通过`next`指针链接到当前尾节点的后面,从而实现了尾插法插入。 文件操作方面,`fopen()`函数用于打开或创建文件`people.txt`。如果文件存在且可读,程序会逐行读取文件内容,并将每个联系人信息存入链表。如果文件不可读或者不存在,程序将创建一个新的文件并准备写入数据。`fgetc()`函数用于读取文件中的单个字符,`feof()`检测是否到达文件末尾,`fseek()`则用于调整文件读取位置,而`fread()`用于从文件中读取结构体数据。 这个示例展示了如何利用C语言的链表数据结构和文件操作功能实现一个简单的通讯录系统。通过读取文件存储的联系人信息,动态构建链表,可以实现对通讯录的管理和操作。如果需要添加其他功能,如搜索、修改和删除联系人,可以通过扩展此代码实现。