#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h >
struct node{
char name[40];/*姓名*/
char tele[20];/*电话*/
struct node * linknext;
};
typedef struct node NODE;
typedef struct node * NODEPTR;
NODEPTR construct();
void search(NODEPTR );
NODEPTR addnew(NODEPTR );
int main(){
int choice = 0;
int n;
NODEPTR tmp = NULL;
printf("***************************************************************\n\n");
printf("\t\t欢迎使用简易通讯录系统\n\n");
printf("***************************************************************\n\n");
NODEPTR head = construct();
if(head != NULL){
printf("创建成功!\n");
do{
printf("请选择相应的功能:1-查找联系人 2-新增联系人 其他-退出\n");
scanf("%d",&choice);
switch(choice){
case 1:
search(head);
break;
case 2:
tmp = addnew(head);
if(tmp == NULL){
printf("没有这个联系人!\n");
}
else{
printf("添加成功!\n");
head = tmp;
}
break;
default:
break;
}
}while(choice == 1 ||choice == 2);
}
return 0;
}
NODEPTR construct(){
int n = 0;
int i = 1;
NODEPTR tmpNode = NULL;
NODEPTR head = NULL;
NODEPTR cu = NULL;
NODEPTR privious = NULL;
char tmpName[40];
char tmpTele[20];
do{
printf("请输入联系人总数:");
scanf("%d",&n);
}while(n <= 0);
while(i<=n){
printf("请输入第 %d 位联系人的姓名和电话并以空格隔开:\n ",i);
scanf("%s %s3",tmpName,tmpTele);
tmpNode = (NODEPTR)malloc(sizeof(NODE));
strcpy(tmpNode->name,tmpName);
strcpy(tmpNode->tele,tmpTele);
if(i == 1){
head = tmpNode;
cu = head;
}
else{
cu->linknext = tmpNode;
cu = tmpNode;
}
i++;
}
cu->linknext = NULL;
printf("输入完成!\n");
return head;
}
void search(NODEPTR head){
char fname[60];
NODEPTR tmp1 = NULL;
// NODEPTR head = construct();
NODEPTR privious = NULL;
NODEPTR cu = NULL;
printf("请输入您要找的联系人姓名:");
scanf("%s",fname);//fname是地址等价于fname[0],&fname无意义相当于取出内存地址数
for(cu = head ; cu != NULL ; cu = cu -> linknext ){
if(strcmp(cu->name,fname) == 0){
printf("%s 的信息如下:\n",fname);
printf("%s %s\n",cu->name,cu->tele);
}
}
//return head;
}
NODEPTR addnew(NODEPTR head){
//int i = 1,j = 1;
char fname[60];
char name2[60];
char tele2[20];
NODEPTR cu = NULL;
NODEPTR privious = NULL;
NODEPTR tmp2 = NULL;
/*for(cu = head;cu != NULL;cu = cu->linknext){
i++;
}*/
printf("您需要将新联系人插入到哪位联系人之前:");
scanf("%s",fname);
for(cu = head; cu->linknext != NULL;cu = cu->linknext){
// j++;
if(strcmp(cu->linknext->name,fname)==0){
printf("请输入新联系人的姓名和电话并以空格隔开:\n");
scanf("%s %s",name2,tele2);
tmp2 = (NODEPTR)malloc(sizeof(NODE));
strcpy(tmp2->name,name2);
strcpy(tmp2->tele,tele2);
tmp2->linknext = cu->linknext;
cu->linknext = tmp2;
cu = tmp2;
// printf("插入完成!\n");
}
}
return head;
}
c语言-简易通讯录
最新推荐文章于 2022-04-23 12:12:50 发布