#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 11 //这个最好大一点
typedef struct address_book
{
// int NO;
char name[MAXSIZE];
char num[MAXSIZE];
struct address_book *next;
}adbook;
#if 1
void create_adbook(adbook *head, int n) //这个函数不需要返回值的所以返回值可以为void
{
adbook *p;
adbook *r;
int i;
// p = (adbook *)malloc(sizeof(adbook));
r = head;
for(i = 0; i < n; i++)
{
p = (adbook *)malloc(sizeof(adbook));
printf("please input linkman's name, num\n");
// scanf("%d,%s,%s",&(p->NO), &(p->name), &(p->num)); //scanf 这样用不好 输入的时候还要自己加逗号
// scanf("%d",&(p->NO));
scanf("%s",p->name);
scanf("%s",p->num);
r->next = p;
r = p;
}
r->next = NULL;
// return head;
}
#endif
int add(adbook *head, int j)
{
int i = 0;
adbook *p;
adbook *s;
p = head;
while(p && i < j )
{
p = p->next;
++i;
}
if(!p || i > j)
{
return -1;
}
s = (adbook *)malloc(sizeof(adbook));
s->next = p->next;
p->next = s;
printf("input the name you add:\n" );
scanf("%s", p->name);
printf("input the num you add:\n");
scanf("%s", p->num);
return 0;
}
int delete(adbook *head,int i)
{
adbook *p;
adbook *q;
int j = 1;
p = head;
while(p->next && j < i)
{
p = p->next;
j++;
}
if(!(p->next) || j > i)
{
return -1;
}
q = p->next;
p->next = q->next;
free(q);
return 0;
}
int find(adbook *head, int h)
{
int j = 0;
adbook *p;
p = head;
while(p && j < h)
{
p = p->next;
j++;
}
if(!p || j > h)
{
return -1;
}
printf("%s,%s\n", p->name, p->num);
return 0;
}
void print(adbook *head)
{
adbook *p;
p = head;
p = p->next;
while(p!= NULL)
{
printf(" %s, %s\n", p->name, p->num);
p = p->next;
}
}
int main()
{
int n;
int k;
int i;
int j;
int h;
adbook *head;
head = (adbook *)malloc(sizeof(adbook));
head->next = NULL;
printf("This is a empty address book.please add new linkman!\n");
printf("please input sum(linkman) n = ");
scanf("%d", &n);
create_adbook(head, n);
printf("This address book created success!\n");
print(head);
printf("please input the num (1-add,2-delete,3-find):\n");
scanf("%d", &k);
switch(k)
{
case 1:
print(head);
printf("please input the add num j = ");
scanf("%d", &j);
add(head, j);
print(head);
break;
case 2:
printf("please input the delete num i = ");
scanf("%d", &i);
delete(head,i);
print(head);
break;
case 3:
printf("please input the find num h = ");
scanf("%d", &h);
find(head, h);
break;
default :
printf("please input again!\n");
break;
}
return 0;
}
简单的通讯录(有bug)
最新推荐文章于 2018-03-15 20:17:54 发布