版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwwww_bw/article/details/53440591
前几天学了链表
然后写了个通讯录
#include <stdio.h>
#include <malloc.h>
#include <string.h>
//#include <stdlib.h>
#include <malloc.h>
#include <string.h>
//#include <stdlib.h>
#define MAXSIZE 10
typedef struct NODE
{
char name[MAXSIZE];
char p_num[MAXSIZE];
{
char name[MAXSIZE];
char p_num[MAXSIZE];
struct NODE *next;
}node;
}node;
void create(node *head) /*创建联系人*/
{
node *p; /*判断联系人是否存在的指针变量*/
int i = 1;
{
node *p; /*判断联系人是否存在的指针变量*/
int i = 1;
char name[MAXSIZE];
char p_num[MAXSIZE];
char p_num[MAXSIZE];
printf("*****************请输入姓名:************\n");
scanf("%s",name);
//getchar();
scanf("%s",name);
//getchar();
p = head->next;
while(p != NULL)
{
if(strcmp(p->name,name) == 0)
{
printf("*********联系人已存在************\n");
p = NULL;
i = 0; /* 联系人已存在,不执行输入手机号命令*/
}
else
{
p = p->next;
}
}
while(p != NULL)
{
if(strcmp(p->name,name) == 0)
{
printf("*********联系人已存在************\n");
p = NULL;
i = 0; /* 联系人已存在,不执行输入手机号命令*/
}
else
{
p = p->next;
}
}
while( 1 == i)
{
node *q;
{
node *q;
printf("**************请输入手机号:**************\n");
scanf("%s",p_num);
scanf("%s",p_num);
q = (node*)malloc(sizeof(node));
if(NULL == q)
{
printf("error2\n");
}
if(NULL == q)
{
printf("error2\n");
}
strcpy(q->name,name);
strcpy(q->p_num,p_num);
q->next = head->next;
head->next = q; /*touchafa*/
i = 0;
}
}
void order(node *head,int len1)
{
node *p; /*用来排序的变量*/
node *q; /*同上*/
strcpy(q->p_num,p_num);
q->next = head->next;
head->next = q; /*touchafa*/
i = 0;
}
}
void order(node *head,int len1)
{
node *p; /*用来排序的变量*/
node *q; /*同上*/
p = head->next;
while(len1 > 0) /*实现联系人按字母排列*/
{
while(p != NULL && p->next!= NULL)
{
char tempname[MAXSIZE]; /*相当于中间变量用来存储联系人信息*/
char tempp_num[MAXSIZE];
if(strcmp(p->name,p->next->name) > 0)
{
strcpy(tempname, p->next->name);
strcpy(tempp_num,p->next->p_num);
{
while(p != NULL && p->next!= NULL)
{
char tempname[MAXSIZE]; /*相当于中间变量用来存储联系人信息*/
char tempp_num[MAXSIZE];
if(strcmp(p->name,p->next->name) > 0)
{
strcpy(tempname, p->next->name);
strcpy(tempp_num,p->next->p_num);
strcpy(p->next->name,p->name);
strcpy(p->next->p_num,p->p_num);
strcpy(p->next->p_num,p->p_num);
strcpy(p->name,tempname);
strcpy(p->p_num,tempp_num);
}
else
{
p=p->next;
}
}
len1--;
}
}
void print(node *head) /*打印联系人的函数*/
{
node *p;
p = head->next;
strcpy(p->p_num,tempp_num);
}
else
{
p=p->next;
}
}
len1--;
}
}
void print(node *head) /*打印联系人的函数*/
{
node *p;
p = head->next;
printf("现在联系人为:\n");
while(p != NULL)
{
printf("姓名:%s\n手机号:%s\n",p->name,p->p_num);
p = p->next;
}
}
void del(node *head) /*删除指定联系人函数*/
{
node *p;
node *q;
q = head;
p = q->next;
while(p != NULL)
{
printf("姓名:%s\n手机号:%s\n",p->name,p->p_num);
p = p->next;
}
}
void del(node *head) /*删除指定联系人函数*/
{
node *p;
node *q;
q = head;
p = q->next;
char name[MAXSIZE];
printf("************请输入要删除的姓名:*********\n");
scanf("%s",name);
scanf("%s",name);
while((p != NULL) && (strcmp(p->name,name) != 0))
{
q = p;
p = p->next;
}
if(NULL == p)
{
printf("************未查找到***************\n");
}
else
{
q->next = p->next;
free(p);
printf("***********删除成功****************\n");
}
}
void find(node *head)
{
node *p;
{
q = p;
p = p->next;
}
if(NULL == p)
{
printf("************未查找到***************\n");
}
else
{
q->next = p->next;
free(p);
printf("***********删除成功****************\n");
}
}
void find(node *head)
{
node *p;
char name[MAXSIZE];
printf("*******请输入要查找的姓名:**********\n");
scanf("%s",name);
scanf("%s",name);
p = head->next;
while(p != NULL && strcmp(p->name,name) != 0)
{
p = p->next;
}
if(NULL == p)
{
printf("********没有这个联系人*********\n");
}
else
{
printf(" 姓名:%s\n 手机号:%s",p->name,p->p_num);
}
}
{
p = p->next;
}
if(NULL == p)
{
printf("********没有这个联系人*********\n");
}
else
{
printf(" 姓名:%s\n 手机号:%s",p->name,p->p_num);
}
}
void all_delete(node *head)
{
while(head->next != NULL)
{
node *q;
{
while(head->next != NULL)
{
node *q;
q = head->next;
head->next = q->next;
head->next = q->next;
free(q);
}
if(NULL == head->next)
{
printf("*********清除所有联系人成功*********\n");
}
}
int display()
{
printf( "\n*************************请选择要进行的操作*************************\n");
printf( "* 查找 清空 **\n");
printf( "* 联系人 添加联系人请输入 联系人 **\n");
printf( "* 33 11 55 **\n");
printf( "********************************************************************\n");
printf( "* 浏览 退出 **\n");
printf( "* 联系人 删除联系人请输入 66 **\n");
printf( "* 44 22 66 **\n");
printf( "********************************************************************\n");
}
int main()
{
int a;
int n = 1;
int len = 0;
}
if(NULL == head->next)
{
printf("*********清除所有联系人成功*********\n");
}
}
int display()
{
printf( "\n*************************请选择要进行的操作*************************\n");
printf( "* 查找 清空 **\n");
printf( "* 联系人 添加联系人请输入 联系人 **\n");
printf( "* 33 11 55 **\n");
printf( "********************************************************************\n");
printf( "* 浏览 退出 **\n");
printf( "* 联系人 删除联系人请输入 66 **\n");
printf( "* 44 22 66 **\n");
printf( "********************************************************************\n");
}
int main()
{
int a;
int n = 1;
int len = 0;
node *head;
node *q;
node *q;
head = (node*)malloc(sizeof(node));
if(NULL == head)
{
printf("error\n");
}
{
printf("error\n");
}
q = head;
head->next = NULL;
while(n == 1)
{
printf("\n",display());
printf("\n**********************请输入要进行的操作**********\n\n");
scanf("%d",&a);
head->next = NULL;
while(n == 1)
{
printf("\n",display());
printf("\n**********************请输入要进行的操作**********\n\n");
scanf("%d",&a);
switch(a)
{
case 1:
// getchar();
create(q);
len++;
order(q,len);
a = 0;
break;
case 2:
if(len == 0)
{
printf("**********现无联系人*************\n");
break;
}
else
{
del(q);
getchar();
print(q);
len--;
break;
}
case 3:
if(0 == len)
{
printf("*********现无联系人*************\n");
break;
}
else
{
find(q);
break;
}
case 4:
if(0 == len)
{
printf("*********现无联系人***************\n");
break;
}
else
{
print(q);
break;
}
case 5:
if(0 == len)
{
printf("*********现无联系人***********\n");
break;
}
else
{
all_delete(q);
len = 0;
break;
}
case 6:
{
case 1:
// getchar();
create(q);
len++;
order(q,len);
a = 0;
break;
case 2:
if(len == 0)
{
printf("**********现无联系人*************\n");
break;
}
else
{
del(q);
getchar();
print(q);
len--;
break;
}
case 3:
if(0 == len)
{
printf("*********现无联系人*************\n");
break;
}
else
{
find(q);
break;
}
case 4:
if(0 == len)
{
printf("*********现无联系人***************\n");
break;
}
else
{
print(q);
break;
}
case 5:
if(0 == len)
{
printf("*********现无联系人***********\n");
break;
}
else
{
all_delete(q);
len = 0;
break;
}
case 6:
n = 0;
break;
break;
default:
{
printf("*****输入错误,请重新选择指令:******\n");
}
getchar();
//setbuf(stdin,NULL);
//return 0;
break;
}
}
}
{
printf("*****输入错误,请重新选择指令:******\n");
}
getchar();
//setbuf(stdin,NULL);
//return 0;
break;
}
}
}