typedef struct Contacts
{
char name[NAME_MAX];
int age;
char sex[SEX_MAX];
char address[ADDRESS_MAX];
char numbers[NUMBERS_MAX];
struct Contacts* next;
}Contacts;
void ConInfor(Contacts* con)
{
printf("请输入姓名:");
scanf("%s", con->name);
printf("请输入年龄:");
scanf("%d", &con->age);
printf("请输入性别:");
scanf("%s", con->sex);
printf("请输入家庭地址:");
scanf("%s", con->address);
printf("请输入电话号码:");
scanf("%s", con->numbers);
con->next = NULL;
}
void AddContacts(Contacts** pphead)
{
Contacts* new_contacts = (Contacts*)malloc(sizeof(Contacts));
ConInfor(new_contacts);
if (*pphead == NULL)
{
*pphead = new_contacts;
}
else
{
Contacts* cur = *pphead;
while (cur->next != NULL)
{
cur = cur->next;
}
cur->next = new_contacts;
}
}
void DelContacts(Contacts** pphead)
{
printf("请输入要删除联系人姓名:");
char name[NAME_MAX];
scanf("%s", name);
int flag = 1;
if (*pphead == NULL)
{
printf("删除失败,通讯录无数据!\n");
return;
}
else if ((*pphead)->next==NULL)
{
if (strcmp(name, (*pphead)->name) == 0)
{
*pphead = NULL;
printf("删除成功!\n");
flag = 0;
}
}
else
{
Contacts* prve =*pphead;
Contacts* cur = *pphead;
if (strcmp(name, cur->name) == 0)
{
*pphead = cur->next;
printf("删除成功!\n");
return;
}
while (cur != NULL)
{
if (strcmp(name,cur->name) == 0)
{
prve->next = cur->next;
free(cur);
flag = 0;
printf("删除成功!\n");
break;
}
prve = cur;
cur = cur->next;
}
}
if (flag == 1)
{
printf("删除失败,通讯录无数据!\n");
}
}
void DelContacts(Contacts** pphead)
{
printf("请输入被删除联系人姓名:");
char name[NAME_MAX];
scanf("%s", name);
int flag = 1;
if (*pphead == NULL)
{
printf("删除失败,通讯录无数据!\n");
return;
}
else if ((*pphead)->next==NULL)
{
if (strcmp(name, (*pphead)->name) == 0)
{
*pphead = NULL;
printf("删除成功!\n");
flag = 0;
}
}
else
{
Contacts* prve =*pphead;
Contacts* cur = *pphead;
if (strcmp(name, cur->name) == 0)
{
*pphead = cur->next;
printf("删除成功!\n");
return;
}
while (cur != NULL)
{
if (strcmp(name,cur->name) == 0)
{
prve->next = cur->next;
free(cur);
flag = 0;
printf("删除成功!\n");
break;
}
prve = cur;
cur = cur->next;
}
}
if (flag == 1)
{
printf("删除失败,通讯录无数据!\n");
}
}
void PrintContacts(Contacts* phead)
{
if (phead == NULL)
{
printf("通讯录为空\n");
}
else
{
printf("姓名 年龄 性别 电话号码 住址\n");
while (phead != NULL)
{
Print(phead);
phead = phead->next;
}
}
}
void Print(Contacts* phead)
{
printf("%-20s ", phead->name);
printf("%-5d ", phead->age);
printf("%-5s ", phead->sex);
printf("%-20s ", phead->numbers);
printf("%-20s \n", phead->address);
}
void ClearContacts(Contacts** pphead)
{
Contacts* prve = *pphead;
Contacts* cur = *pphead;
while (cur != NULL)
{
prve = cur;
cur = cur->next;
free(prve);
}
*pphead = NULL;
printf("已清空!\n");
}