单链表的应用———简单的通讯录

本人初学数据结构,代码还不够完善,还望各位大神,可以指点一二。奋斗
#include //建立通讯录
#include 
#include 
typedef struct Node{
     char name[20];
	 char  Iphonedata[11];
	 int  qq;
	 struct Node *next;
}Node,*LinkList;
void CreatList(LinkList &L)
{ 
    int i;
	LinkList r,p;
	L=(LinkList)malloc(sizeof(Node));
	r=L;
	
	printf("进行通信录的输入,1 or 0?\n");
	scanf("%d",&i);
	getchar();
	while(i)
	{
		p=(LinkList)malloc(sizeof(Node));
		printf("请输入姓名:\n");
		gets(p->name);
		//getchar();
		printf("请输入电话号码:\n");
		gets(p->Iphonedata);//为什么连着是char类型的   下面的输入会存在这个存入呢???
		//getchar();
		//scanf("%ld",&p->Iphonedata);
		printf("请输入qq号:\n");
		//gets(p->qq);
		scanf("%d",&p->qq);
		r->next=p;
		r=p;
		scanf("%d",&i);
		getchar();
	}
	r->next=NULL;
}
void OutPut(LinkList L)
{
	LinkList p;
	p=L->next;
	while(p!=NULL)
	{
		printf("姓名:%s\t手机号:%s\tQQ号:%d\t\n",p->name,p->Iphonedata,p->qq);
		
		p=p->next;
	}
}

void AddList(LinkList &L)
{  LinkList p,r;
     int number,j;
	 r=L;
	 while(r->next!=NULL)//cur->next!=NULL?
		 r=r->next;
	int i;
	printf("进行通信录的输入,1 or 0?\n");
	scanf("%d",&i);
	getchar();
	while(i)
	 {p=(LinkList)malloc(sizeof(Node));
		if(p!=NULL)
		{
		  printf("请输入姓名:\n");
		gets(p->name);
		//getchar();
		printf("请输入电话号码:\n");
		gets(p->Iphonedata);//为什么连着是char类型的   下面的输入会存在这个存入呢???
		//getchar();
		//scanf("%ld",&p->Iphonedata);
		printf("请输入qq号:\n");
		//gets(p->qq);
		scanf("%d",&p->qq);

		   p->next=NULL;

		    r->next=p;  
			scanf("%d",&i);
		    getchar();
		}	
	}

}

/*int SearchList(LinkList L)
{  LinkList r;
   int QQ;
   char name[20];
   char Iphone[11];
   int sel;
   r=L;
   getchar();
   printf("请输入1--3其中一个分别进行姓名,电话,qq查询:\n");
   scanf("%d",&sel);
   switch(sel)
   {
   case 1:
	   getchar();
	   gets(name);
	    while(r!=NULL)
   {
	   if(strcmp(name,r->name)==0)
		   break;
	   else
		   r=r->next;
   }
      if(r!=NULL)
	  {
		  printf("姓名:%s\t\t手机号:%s\t\tQQ:%d\n",r->name,r->Iphonedata,r->qq);
	  }
	  else 
		  printf("不存在这个学生!\n");
	   break;
   case 2:
	   getchar();
	   gets(Iphone);
	   while(r!=NULL)
     {
	   if(strcmp(Iphone,r->Iphonedata)==0)
		   break;
	   else
		   r=r->next;
     }
      if(r!=NULL)
	  {
		  printf("姓名:%s\t\t手机号:%s\t\tQQ:%d\n",r->name,r->Iphonedata,r->qq);
	  }
	  else 
		  printf("不存在这个学生!\n");

	   break;
   case 3:
	   scanf("%d",&QQ);
	     while(r!=NULL)
      {
	   if(QQ==r->qq)
		   break;
	   else
		   r=r->next;
      }
      if(r!=NULL)
	  {
		  printf("姓名:%s\t\t手机号:%s\t\tQQ:%d\n",r->name,r->Iphonedata,r->qq);
	  }
	  else 
		  printf("不存在这个学生!\n");

	   break;
   }
   
   return 0;
}*/
int SearchList(LinkList L)
{  LinkList r;
   char name[20]; 
   r=L;
   getchar();
	   gets(name);
	    while(r!=NULL)
   {
	   if(strcmp(name,r->name)==0)
		   break;
	   else
		   r=r->next;
   }
      if(r!=NULL)
	  {
		  printf("姓名:%s\t\t手机号:%s\t\tQQ:%d\n",r->name,r->Iphonedata,r->qq);
	  }
	  else 
		  printf("不存在这个学生!\n");
	return 0;
}
int DeleteList(LinkList &L)
{
	LinkList r,p;
	char name[20];
	r=L;
	getchar();
	printf("请输入将要删除的姓名:");
	gets(name);
	while(r->next!=NULL)
	{
		if(strcmp(name,r->next->name)==0)
			break;
		else
			r=r->next;
	}
	if(r->next!=NULL)
	{
		p=r->next;
		r->next=p->next;
		free(p);
	}
	printf("删除成功!\n");
	return 0;
}
int main()
{
	LinkList L;
	int sel;//选择命令
	while(1)
	{
		printf("\t通讯录\n");
		printf("1.通讯录的创建\n");
		printf("2.通讯录的显示\n");
		printf("3.通讯录的增加\n");
		printf("4.通讯录的删除\n");
		printf("5.通讯录的查找\n");
		printf("0.退出系统\n");
		printf("请选择(0--5)的命令:\n");
		scanf("%d",&sel);
		switch(sel)
		{
		case 1: CreatList(L);break;
		case 2: OutPut(L);break;
	    case 3: AddList(L);break;
		case 4: DeleteList(L);break;
	    case 5: SearchList(L);break;
		case 0: return 0;break;
		}
	}
	system("pause");
	return 0;
}

你可能感兴趣的:(数据结构)