通讯录简单实现
通讯录可以用来存个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
利用构建一个结构体来保存信息,结构体的大小根据所需来自行规定
typedef struct add
{
char name[max_name];
char sex[max_sex];
int age;
char tele[max_tele];
char addr[max_addr];
}add;
typedef struct addnode
{
add *_data;
addnode *_next;
}addnode;
关于信息存储的方法,最简单的两种办法就是链表跟顺序表的结构,简单说呢就是两种不同的对数据或者说结构体的应用方法,另外两种实行方法各有优点此处以链表为例。
每一个人的信息通过给指针分配相应大小的空间来进行操作,这个指针呢,称其为结点,一个通讯录中相当于有很多指针即结点构成,而结点可以看作是一个一个的联系人。而结点本身是一个指针,指针所指的区域保存两个指针一个指向数据,即结构体部分,另一个指向下一个结点,
问题:
1如何给指针分配空间?分配的空间用来干什么?
malloc函数 用来联系人储存信息 。
2对于指针的应用,创建哪种类型的指针,怎样利用指针访问联系人信息,能否对其修改,怎样输入信息;
创建addnode *类型指针 eg:访问姓名 p(假设p是创建的指针名) ->_data->name;访问下一个结点 p->_next;
可以修改,但须注意赋值时类型相同。字符串%s+scanf.
当这一步实现好之后内存中就会有许许多多这样的的指针存在
addnode * ——->add *_data———->add结构体
——–>_next———>下一个addnode 类型的结点。即 “联系人”
提供功能:
在信息的结构体创建好后,通过函数来根据用户需求对结构体结点创建、增加、删除、修改、排序等操作
- 添加联系人信息
- 删除指定联系人信息
- 查找指定联系人信息
- 修改指定联系人信息
- 显示所有联系人信息
- 清空所有联系人
- 以名字排序所有联系人
- 不限定联系人数(动态)
功能实现
add *BuyNode ();//创建链表结点并返回为一个指针
void InitAdd(addnode *phead);//初始化
void InertAdd(addnode *phead);//添加联系人信息
void FindAdd(addnode *phead);//查找联系人信息
void ChangAdd(addnode *phead);//修改联系人信息
void PrintAdd(addnode *phead);//显示所有联系人信息
void DestroyAdd(addnode *phead);//清空所有联系人
void NameSortAdd(addnode *phead);//按姓名排序
知识部分
了解switch case、typedef、宏、malloc、scanf、sizeof等基本函数以及关键字的应用。
熟练理解结构体。
能对指针进行基础操作
了解函数的基础操作