本人初学数据结构,代码还不够完善,还望各位大神,可以指点一二。<img alt="奋斗" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif" />
#include <stdio.h>//建立通讯录
#include <stdlib.h>
#include <string.h>
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;
}
版权声明:本文为x_zhaohu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。