#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct DATA
{
char key[15];
char addr[20];
char telephone[15];
char qq[12];
};
typedef struct Node
{
DATA data;
struct Node *next;
}ChainListType;
ChainListType *head;
ChainListType *AddFirst(DATA data)
{
ChainListType *p;
p=(ChainListType *)malloc(sizeof(ChainListType));
if(!p)
{
printf("为保存节点数据申请内存失败!\n");
return NULL;
}
p->data=data;
p->next=head;
head=p;
return head;
}
void ChainListDelete(char *name)
{
ChainListType *p,*h;
p=head,h=head;
if(!h)
{
printf("通讯录中暂无联系人,删除失败\n");
return;
}
while(h)
{
if(strcmp(h->data.key,name)==0)
{
if(h==head)
{
head=h->next;
free(h);
printf("删除成功\n");
return;
}
else
{
p->next=h->next;
free(h);
printf("删除成功\n");
return;
}
}
else
{
p=h;
h=h->next;
}
}
printf("对不起,您还未添加此联系人\n");
}
void ChainListAll()
{
int i=0;
ChainListType *h;
DATA data;
h=head;
if(!h)//头插法,逆序输出联系人
printf("通讯录中暂无联系人,请先添加联系人\n");
else
{
printf("显示联系人\n");
while(h)
{
data=h->data;
printf("第%d位联系人:\n",++i);
printf("姓名:%s\n",data.key);
printf("地址:%s\n",data.addr);
printf("电话:%s\n",data.telephone);
printf("扣扣:%s\n",data.qq);
h=h->next;
}
}
}
ChainListType *input()
{
DATA data;
printf("请输入联系人信息\n");
printf("姓名:");
scanf("%s",data.key);
printf("地址:");
scanf("%s",data.addr);
printf("电话:");
scanf("%s",data.telephone);
printf("扣扣:");
scanf("%s",data.qq);
return AddFirst(data);
}
ChainListType *ChainListFind(char *name)
{
ChainListType *h;
h=head;
while(h)
{
if(strcmp(h->data.key,name)==0)
return h;
h=h->next;
}
return NULL;
}
void find()
{
ChainListType *h;
DATA data;
char name[15];
printf("请输入查找姓名:");
scanf("%s",name);
h=ChainListFind(name);
if(h)
{
data=h->data;
printf("查询结果如下:\n");
printf("姓名:%s\n",data.key);
printf("地址:%s\n",data.addr);
printf("电话:%s\n",data.telephone);
printf("扣扣:%s\n",data.qq);
}
else
printf("查无此人\n");
}
void detele()
{
ChainListType *h=head;
char name[15];
printf("请输入要删除的姓名:");
scanf("%s",name);
ChainListDelete(name);
}
int main()
{
int select;
printf("\t\t\t\t\t ******通讯录*****\n");
printf("\t\t\t\t\t┌────────┐\n\n");
printf("\t\t\t\t\t│ 1.添加联系人 │\n");
printf("\t\t\t\t\t│ 2.查找联系人 │\n");
printf("\t\t\t\t\t│ 3.删除联系人 │\n");
printf("\t\t\t\t\t│ 4.显示联系人 │\n");
printf("\t\t\t\t\t│ 0.退出!拜拜 │\n");
printf("\t\t\t\t\t└────────┘\n");
printf("请输入数字:");
scanf("%d",&select);
while(select)
{
switch(select)
{
case 1:
printf("添加联系人\n");
input();
break;
case 2:
printf("查找联系人\n");
find();
break;
case 3:
printf("删除联系人\n");
detele();
break;
case 4:
ChainListAll();
break;
default:
printf("输入错误,请重新输入:");
break;
}
printf("\n");
printf("请输入数字:");
scanf("%d",&select);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交