#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 1000
#define RED "\033[0;32;31m"
#define NONE "\033[m"
int num;
struct student
{
char name[20];
int age;
char phone[20];
struct student * next;
};
typedef struct student STU;
void delete(STU *head)
{
system("clear");
while(1)
{
STU *p,*q,*t;
p = (STU *) malloc (sizeof(STU));
printf("请输入要删除人的姓名\n");
scanf("%s",p->name);
if(head == NULL)
{
printf("通讯录内容为空\n");
sleep(3);
break;
}
q = head;
while(strcmp(q->name,p->name) && q != NULL)
{
t = q;
q = q->next;
}
if(!strcmp(q->name,p->name) && q != NULL)
{
if(q == head)
{
head = q->next;
}
else
{
t->next = q->next;
}
free(q);
--num;
printf("删除成功\n");
}
if(q == NULL)
{
printf("删除失败\n");
}
if(!strcmp(p->name,"quit"))
{
break;
}
}
}
STU *create()
{
system("clear");
STU *head,*p1,*p2;
num = 0;
p1 = p2 = (STU *) malloc (sizeof(STU));
printf("请输入联系人的姓名、年龄和电话!(输入quit退回主菜单)\n");
scanf("%s",p1->name);
head = NULL;
while(strcmp(p1->name,"quit"))
{
scanf("%d",&p1->age);
scanf("%s",p1->phone);
++num;
if(num == 1)
{
head = p1;
}
else
{
p2->next = p1;
}
p2 = p1;
p1 = (STU *) malloc (sizeof(STU));
printf("请输入联系人的姓名、年龄和电话!(输入quit退回主菜单)\n");
scanf("%s",p1->name);
}
p2->next = NULL;
return (head);
}
void print(STU *head)
{
system("clear");
getchar();
STU *p;
printf("当前通讯录内容为:\n");
p = head;
if(head != NULL)
{
do
{
printf("%s %d %s\n",p->name,p->age,p->phone);
p = p->next;
}while(p != NULL);
}
printf("请按任意键退出\n");
getchar();
}
void welcome()
{
system("clear");
printf("\n\n\n\n\n");
printf(RED" 欢迎来到主菜单:\n"NONE);
sleep(3);
}
int menue()
{
system("clear");
printf(RED"\n\n\n\n 主菜单\n\n\n"NONE);
printf(RED"1.新建通讯录 2.查看信息\n"NONE);
printf(RED"3.查找信息 4.删除信息\n"NONE);
printf(RED"5.修改信息 6.退出主菜单\n"NONE);
printf(RED"请输入序号进入指定功能\n"NONE);
}
int main()
{
STU *head;
int choice;
welcome();
while(1)
{
M: menue();
scanf("%d",&choice);
switch(choice)
{
case 1:
{
head = create();
break;
}
case 2:
{
print(head);
break;
}
case 3:
{
/*search(per);
break;*/
}
case 4:
{
delete(head);
break;
}
case 5:
{
/*transfer(per);
break;*/
}
case 6:
{
exit (0);
break;
}
default:
{
goto M;
}
}
}
return 0;
}
链表通讯录的部分功能实现(删除功能仍有BUG)
猜你喜欢
转载自blog.csdn.net/ZCzhouchao1/article/details/81349065
今日推荐
周排行