#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define len_linklist 0
#define maxsize 11
#define yes 1
typedef struct node
{
char name[maxsize];
char tel_number[maxsize];
struct node *next;
}lnode,*linklist;
int Init_linklist(linklist l)//初始化單鏈表;
{
l = (linklist)malloc(sizeof(lnode));
if(!l)
{
return 0;
}
l->next = NULL;
return 1;
}
int Empty_linklist(linklist l)//檢查是否創建成功
{
if(l)
{
return 1;
}
return 0;
}
int Clear_linklist(linklist l)//銷燬鏈表
{
linklist p;
linklist q;
p = l->next;
while(p != NULL)
{
q = p->next;
free(p);
p = q;
}
l->next = NULL;
return 1;
}
void Assignment_linklist(linklist *l)//給單鏈表賦值 ;
{
int i;
char n[maxsize];
char m[maxsize];
int year;
linklist p;
linklist r;
*l = (linklist)malloc(sizeof(lnode));
r = *l;
for(i = 0; i < len_linklist; i++)
{
p = (linklist)malloc(sizeof(lnode));
strcpy(p->name,gets(m));
strcpy(p->tel_number,gets(n));
r->next = p;
r = p;
}
r->next = NULL;
}
int Travle_linklist(linklist l)//遍歷輸出鏈表數據
{
linklist p = l->next;
while(p!=NULL)
{
printf("姓名:%s 號碼:%s\n",p->name,p->tel_number);
p = p->next;
}
printf("\n");
return 1;
}
void Insert_linklist(linklist l,char *insert_name,char *insert_tel)//插入數據
{
linklist p;
linklist s;
p = l;
s = (linklist)malloc(sizeof(lnode));
strcpy(s->name,insert_name);
strcpy(s->tel_number,insert_tel);
s->next=NULL;
while(p->next!=NULL)
{
p=p->next;
}
p->next= s;
}
int Delete_linklist(linklist l,char *delete_name)//指定位置刪除
{
linklist p;
linklist s;
p = l;
while(p!=NULL)
{
if(strcmp(p->next->name,delete_name)==0)
{
s =p->next;
p->next = s->next;
return 0;
}
p = p->next;
}
free(s);
return 1;
}
int Find_tel(linklist l,char *find_name)
{
linklist p;
p = l->next;
while(p != NULL)
{
if(strcmp(p->name,find_name) == 0)
{
printf("%s",p->tel_number);
return 0;
}
else
{
p = p->next;
}
}
return 1;
}
int Update_tel(linklist l,char *update_name,char *update_tel)
{
int number;
linklist p;
p = l->next;
while(p != NULL)
{
if(strcmp(p->name,update_name) == 0)
{
printf("是否將%s改爲%s?\n",p->tel_number,update_tel);
scanf("%d",&number);
if(number!=0)
{
printf("已將%s改爲%s\n",p->tel_number,update_tel);
strcpy(p->tel_number,update_tel);
}
return 0;
}
else
{
p = p->next;
}
}
return 1;
}
void My_insert_linkman(linklist l)
{
char *insert_name;
char *insert_tel;
char n[maxsize];
char m[maxsize];
printf("輸入姓名:");
scanf("%s",m);
printf("輸入號碼:");
scanf("%s",n);
insert_name=m;
insert_tel=n;
Insert_linklist(l,insert_name,insert_tel);//添加聯繫人;
//Travle_linklist(l);
}
void My_delete_linkman(linklist l)
{
char *delete_name;
char *delete_n[maxsize];
scanf("%s",delete_n);
delete_name=delete_n;
Delete_linklist(l,delete_name);//刪除聯繫人;
//Travle_linklist(l);
}
void My_find_linkman(linklist l)
{
char *find_name;
char *find_n[maxsize];
scanf("%s",find_n);
find_name=find_n;
printf("查找的號碼:");
Find_tel(l,find_name);//刪除聯繫人;
printf("\n");
}
void My_update_linkman(linklist l)
{
char *update_name;
char *update_n[maxsize];
char *update_tel;
char *update_t[maxsize];
scanf("%s",update_n);
scanf("%s",update_t);
update_name=update_n;
update_tel=update_t;
printf("更改號碼:");
Update_tel(l,update_name,update_tel);//更改聯繫人方式;
}
print ()
{
printf("**********菜單:0--4**********\n");
printf("***********0: 退出***********\n");
printf("********1:添加聯繫人********\n");
printf("********2:刪除聯繫人********\n");
printf("********3:查找聯繫人********\n");
printf("********4:修改聯繫人********\n");
printf("********5:顯示聯繫人********\n");
}
int main()
{
linklist l;
Init_linklist(l);
Assignment_linklist(&l);
int bottom;
int y_n=1;
// printf("開始的通訊錄\n");
print();
while(y_n)
{
printf("選擇功能:\n");
scanf("%d",&bottom);
switch(bottom)
{
case 1: printf("**添加聯繫人**:\n");
My_insert_linkman(l);
printf("\n");
break;
case 2: printf("**刪除聯繫人**:\n");
printf("刪除 ");
My_delete_linkman(l);
printf("\n");
break;
case 3: printf("**查找聯繫人**:");
My_find_linkman(l);
printf("\n");
break;
case 4: printf("修改聯繫人方式\n");
My_update_linkman(l);
printf("\n");
break;
case 5: printf("*************通訊錄************\n");
Travle_linklist(l);
printf("\n");
break;
case 0: y_n = 0;
break;
}
}
return 0;
}
通訊錄終極版
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.