#include<stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct people{
char name[10];//姓名
int age;//年龄
int num;//手机号码
struct people *next;
}PEOPLE;
void create(PEOPLE *L)//尾插法建立链表
{
PEOPLE *p,*r;
int i;
r=L;
for(i=0;i<5;i++)
{
p=(PEOPLE *)malloc(sizeof(PEOPLE));
printf("input a name:\n");
scanf("%s",p->name);
printf("input age:\n");
scanf("%d",&(p->age));
printf("input num:\n");
scanf("%d",&(p->num));
r->next=p;
r=p;
}
r->next=NULL;
}
void paixu(PEOPLE *L)//排序
{
PEOPLE *p,*q,*tmp;
int i,j;
tmp=(PEOPLE *)malloc(sizeof(struct people));
p=L->next;
q=p->next;
while(p!=NULL)
{
while(q!=NULL)
{
if(strcmp(p->name,q->name)>0)
{
strcpy(tmp->name,p->name);
strcpy(p->name,q->name);
strcpy(q->name,tmp->name);
tmp->age=p->age;
p->age=q->age;
q->age=tmp->age;
tmp->num=p->num;
p->num=q->num;
q->num=tmp->num;
}
q=q->next;
}
q=p->next;
p=p->next;
}
}
void insert(PEOPLE *L,char na[],int ag,inttel)
{
PEOPLE *p,*s;//s为创建的空节点用来存放插入数据
int i;//循环使用
p=L;
s=(PEOPLE *)malloc(sizeof(PEOPLE));
strcpy(s->name,na);
s->age=ag;
s->num=tel;//分别将要插入的数据放入空节点中
s->next=p->next;//
p->next=s;
}
void delete(PEOPLE *L,char na[],int ag,inttel)//删除
{
PEOPLE *p,*q;
q=L;
p=L->next;
while(p!=NULL)
{
if((strcmp(p->name,na)==0)&&((p->age)==ag)&&((p->num)==tel))
{
q->next=p->next;
break;
}
else
{
q=q->next;
p=p->next;
}
}
free(p);
}
void print(PEOPLE *L)//输出函数
{
PEOPLE *p=L->next;
int i;
while(p!=NULL)
{
printf("姓名:%10s\t",p->name);
printf("年龄:%5d\t",p->age);
printf("手机号码:%15d\n",p->num);
p=p->next;
}
}
int main()
{
PEOPLE p;
int i,n;
char na[20];
int ag,tel;
printf("通讯录具有以下功能:\n1.创建联系人\n2.列表好友信息\n3.添加好友\n4.搜索好友\n5.删除好友\n");
printf("创建功能请按1:\n");
scanf("%d",&n);
if(n==1)
{
create(&p);
print(&p);
}
printf("添加功能请按2:\n");
scanf("%d",&n);
if(n==2)
{
printf("请输入要添加的姓名:\n");
scanf("%s",na);
getchar();
printf("请输入年龄:\n");
scanf("%d",&ag);
printf("请输入手机号码");
scanf("%d",&tel);
insert(&p,na,ag,tel);//插入函数参数左到右分别为p,姓名,年龄,手机号码
print(&p);
}
printf("排序功能请按3:\n");
scanf("%d",&n);
if(n==3)
{
paixu(&p);
print(&p);
}
printf("删除功能请按4:\n");
scanf("%d",&n);
if(n==4)
{
printf("请输入要删除的名字:\n");
scanf("%s",na);
printf("请输入要删除的人的年龄:\n");
scanf("%d",&ag);
printf("请输入要删除的人的手机号码:\n");
scanf("%d",&tel);
delete(&p,na,ag,tel);//输入要删除的人的姓名,年龄,手机号码
print(&p);
}
return 0;
}