C语言基于链表的简单通讯录

这篇博客介绍了如何使用C语言和链表数据结构来实现一个简单的通讯录。虽然这个通讯录不支持数据持久化,但在Linux环境下可以正常编译运行。博客内容包括概要、头文件、结构体定义、菜单设计以及功能函数的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要

使用了C语言及链表完成的通讯录(不带数据库,关闭后不能保存数据).

头文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>

定义结构体

typedef struct _Person
{
   
        char name[16];   //姓名
        char addr[32];   //地址
        char tel[32];    //联系方式
        struct _Person *next;   //指针
}person;

菜单

void menu()
{
   
        printf("*******************************\n");
        printf("*********   welcome     *******\n");
        printf("*******************************\n");
        printf("*            1:Add            *\n");    添加
        printf("*           2:Query           *\n");    查询
        printf("*           3:Modify          *\n");    修改
        printf("*           4:Delete          *\n");    删除
        printf("*       5:Clear the screen    *\n");    清屏
        printf("*            6:Exit           *\n");    退出
        printf("*******************************\n");
}

功能函数

person *Create()   //创建头指针
{
   
        person *temp = (person *)malloc(sizeof(person));
        if(temp == NULL){
   
                printf("create link failed\n");
                exit(1);
        }
        temp->next = NULL;
        return temp;
}
int Add(person *head)    //添加   采用头插法
{
   
        char name[16] = {
   0};
        char addr[32] = {
   0};
        char tel[32] = {
   0};
        printf("please enter name:");
        scanf("%s",name);
        printf("please enter address:");
        scanf("%s",addr);
        printf("please enter phone number:");
        scanf("%s",tel);

        person *new = 
将全班同学的通讯信息存入一个单链表。元素中的通讯信息包括每一位同学的:学号、姓名、性别、宿舍、联系电话等。要求能够利用姓名和序号进行有关查找、插入、删除、更新等操作。 (1)以单链表作为存储班级通讯录的存储结构,首先需要定义一个单链表数据结构,其中每个元素是一条同学通讯信息,包括学号、姓名、性别、宿舍、联系电话等字段。 (2)将本班的通讯信息输入文本文件“通讯录.txt”中,需要实现文件读写功能。当程序启动时,需要将文件中的信息读入单链表中,当程序结束时,需要将内存中的通讯录链表中的信息重新写入文件。 (3)需要实现向单链表中追加一条通讯录记录的功能,即单链表的插入功能。通过提示信息,让用户将一条通讯录记录的各个字段信息输入内存,构成一个单链表元素,然后将其作为一个整体插入单链表最后一条记录之后,该功能在读取文件信息,创建单链表是也需要用到。 (4)需要实现查询功能,包括通过姓名查询:给定一个姓名,返回其通讯信息和在表中的位置;通过序号查询:给定一个姓名,返回其通讯信息和在表中的位置。 (5)需要实现在给定位置增加一条记录的功能,该位置可以直接设定,也可以通过查询得到,比如先查到姓名为“XXX”的学生的通讯信息在表中的位置,然后在该记录的后面插入一条新的记录。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值