c语言-简易通讯录

#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;

 

发布了17 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33360009/article/details/75125889