链表实现通讯录
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
struct txl
{
char n[10];
char name[10];
char sex [10];
char tele[12];
char address[100];
struct txl *next;
};
typedef struct txl TXL;
typedef struct txl * link;
enum result {exit_ok};
void menu_select()//主菜单
{
printf(" 欢迎进入通讯录管理系统\n");
printf("********************************\n");
printf(" 1.联系人添加\n");
printf(" 2.联系人删除\n");
printf(" 3.联系人修改\n");
printf(" 4.联系人查找\n");
printf(" 5.联系人总览\n");
printf(" 0.退出通讯录管理系统\n");
printf("********************************\n"); }
void is_malloc_ok(link *new_node)
{
if((*new_node) == NULL)
{
printf("Malloc error!");
exit(-1);
}
}
void create_link(link *head)
{
(*head) = (link)malloc(sizeof(TXL));
is_malloc_ok(head);
(*head)->next = NULL;
}
void create_new_node(link *new_node)
{
int i;
*new_node = (link)malloc(sizeof(TXL));
is_malloc_ok(new_node);
printf("请输入编号:\n");
scanf("%s",&(*new_node)->n);
printf("请输入姓名:\n");
scanf("%s",&(*new_node)->name);
printf("请输入性别:\n");
scanf("%s",&(*new_node)->sex);
printf("请输入联系电话:\n");
scanf("%s",&(*new_node)->tele);
printf("请输入家庭地址:\n");
scanf("%s",&(*new_node)->address);
printf("联系人添加成功!\n");
}
insert_new_node(link *new_node,link *head) {
(*new_node)->next = (*head)->next;
(*head)->next = (*new_node);
}
void add_new_node(link *head)
{
link new_node;
create_new_node(&new_node);
insert_new_node(&new_node,head);
}
void display(link *head)
{
int i = 1;
link p = NULL;
if((*head)->next == NULL)
{
printf("通讯录为空!\n");
return;
}
else
{
p = (*head)->next;
while(p != NULL)
{
printf("第%d个联系人的信息如下:\n",i);
printf("序号:%s\n",p->n);
printf("姓名:%s\n",p->name);
printf("性别:%s\n",p->sex);
printf("联系电话:%s\n",p->tele);
printf("家庭地址:%s\n\n\n",p->address);
p = p->next;
i++;
}
}
}
void find(link *head)
{
char n1[10],name1[10],tele1[12],address1[100];
int i;
link xz = (*head)->next;
printf("1.按编号查询\n");
printf("2.按姓名查询\n");
printf("3.按联系电话查询\n");
printf("请输入您想选择的查询方式:\n");
scanf("%d",&i);
if(i == 1)
{
printf("请输入您想查询的编号:\n");
scanf("%s",n1);
if(xz == NULL)
{
printf("通讯录为空!\n");
return;
}
while(xz !=NULL)
{
if(strcmp(xz->n,n1) == 0)
{
printf("您想查询的联系人的信息如下:\n");
printf("编号:%s\n",xz->n);