#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student{
long long int num;
char name[20];
char adress[20];
struct student *next;
}STU;
STU *creatnew()//创建新节点
{
STU *news;
news=(STU*)malloc(sizeof(STU));
news->next=NULL;
return news;
}
int PutAll(STU *head)
{
STU *p=head;
int i=0;
if(head->next==NULL)
{
printf("当前没有联系人信息\n");
fflush(stdin);
getchar();
return 0;
}
while(p->next!=NULL)
{
p=p->next;
i++;
printf("联系人【%d】\n",i);
printf("姓名: %s\n",p->name);
printf("联系电话:%d\n",p->num);
printf("地址:%s\n",p->adress);
printf("**********************\n");
}
fflush(stdin);
getchar();
return 0;
}
int CheckOne(STU* head)
{
if(head->next==NULL)
{
printf("当前没有联系人信息\n");
fflush(stdin);
getchar();
return 0;
}
STU *p=head;
char name[20];
int a=0;
printf("请输入联系人姓名:\n");
scanf("%s",name);
while(p->next!=NULL)
{
p=p->next;
if(strcmp(name,p->name)==0)
{
a=1;
printf("姓名: %s\n",p->name);
printf("联系电话:%d",p->num);
printf("地址:%s\n",p->adress);
}
}
if(a==0)
printf("未找到该联系人信息\n");
fflush(stdin);
getchar();
return 0;
}
STU *Add(STU *head)
{
STU *p1,*p2;
p2=(STU*)malloc(sizeof(STU));
p1=head;
if(head->next==NULL)
{
//printf("UJTY UTYU");
head->next=p2;
printf("请输入联系人信息:\n");
printf("请输入姓名: ");
scanf("%s",p2->name);
printf("\n请输入电话: ");
scanf("%d",&p2->num);
printf("\n请输入地址: ");
scanf("%s",p2->adress);
//p1->next=p2;
p2->next=NULL;
printf("添加完成!\n");
fflush(stdin);
getchar();
}
else
{
while(p1->next!=NULL)
p1=p1->next;
p1->next=p2;
printf("请输入联系人信息:\n");
printf("请输入姓名: ");
scanf("%s",p2->name);
printf("\n请输入电话: ");
scanf("%d",&p2->num);
printf("\n请输入地址: ");
scanf("%s",p2->adress);
//p1->next=p2;
p2->next=NULL;
printf("添加完成!\n");
fflush(stdin);
getchar();
}
return head;
}
STU *DeletOne(STU* head)
{
int num=0;
STU *p1,*p2;
char name[20];
p1=p2=head;
if(head==NULL)
{
printf("当前没有联系人信息\n");
getchar();
return 0;
}
printf("请输入要查找的联系人姓名: \n");
scanf("%s",name);
if(strcmp(name,p1->name)==0)
{
head=p1->next;
printf("删除完成!\n");
getchar();
return head;
}
while(p1->next!=NULL)
{
p2=p1;
p1=p1->next;
if(strcmp(name,p1->name)==0)
{
p2->next=p1->next;
free(p1);
num=1;
}
}
if(num==1)
printf("删除完成!\n");
else
printf("未找到联系人信息!\n");
fflush(stdin);
getchar();
return head;
}
STU *DeleteAll(STU *head)
{
STU *p1,*p2;
int count=0;
p1=p2=head;
while(p1->next!=NULL)
{
p2=p2->next;
p1=p2;
free(p1);
count++;
}
p1=creatnew();
printf("共删除了%d位同学信息\n",count);
fflush(stdin);
getchar();
return p1;
}
int main()
{
STU *head=creatnew();
int choose;
while(1)
{
system("cls");
printf("电话簿系统: \n");
printf("[1].显示所有联系人\n");
printf("[2].查找指定联系人\n");
printf("[3].添加联系人\n");
printf("[4].删除指定联系人\n");
printf("[5].删除所有联系人\n");
printf("[6].退出\n");
printf("\n\n请输入要进行的操作: \n");
scanf("%d",&choose);
switch(choose)
{
case 1: PutAll(head); break;
case 2: CheckOne(head); break;
case 3: head=Add(head); break;
case 4: head=DeletOne(head); break;
case 5: head=DeleteAll(head); break;
case 6: exit(0);
}
}
return 0;
}
单链表 电话簿
最新推荐文章于 2021-02-15 20:12:05 发布