c程序 使用链表建立通讯录

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#define N 20

typedef struct Person{

char Tel[N];

char Name[N];

char Address[2*N];

struct Person *next;

}Person,*Linklist;

//输入函数

void InPut(Linklist p)

{

printf("\n请输入通讯者姓名:\n");

scanf("%s",p->Name);

printf("\n请输入通讯者联系电话:\n");

scanf("%s",p->Tel);

printf("\n请输入通讯者地址:\n");

scanf("%s",p->Address);

}

//输出单个联系人的信息

void PutNode(Linklist p)

{

printf("\n通讯者姓名:\n%s",p->Name);

printf("\n通讯者联系电话:\n%s",p->Tel);

printf("\n通讯者地址:\n%s\n\n",p->Address);

}

//回收内存函数

void Release(Linklist L)

{

Linklist z,p;

p=L;

while(p!=NULL)

{

z=p->next;

free(p);

p=z;

}

}

//建立链表的函数

Linklist CreatList()

{

int tem1;

Linklist s,p,L;

printf("\n输入通讯者信息:\n输入非零整数开始;或者输入'0'退出:\n");

scanf("%d",&tem1);

L=(Linklist)malloc(sizeof(Person));

L->next=NULL;

s=L;

while(tem1!=0){

p=(Linklist)malloc(sizeof(Person));

InPut(p);

p->next=s->next;s->next=p;s=p;

printf("\n输入学生信息:\n输入非零整数继续;或者输入'0'退出:\n");

scanf("%d",&tem1);

}

return L;

}

//向通讯录中第i个位置前插入一个联系人的函数

void ListInsert(Linklist L,int i)

{

int j=0;

Linklist s,p;

p=L;

while(p&&jnext;++j;}

if(!p||j>i-1) exit(0);

s=(Linklist)malloc(sizeof(Person));

InPut(s);

s->next=p->next;

p->next=s;

}

//删除通讯录中第i个联系人的函数

void ListDelete(Linklist L,int i)

{

int j=0;

Linklist p,q;

p=L;

while(p->next&&jnext;++j;}

if(!(p->next)||j>i-1) exit(0);

q=p->next;p->next=q->next;

printf("您将删除的联系人信息为:\n");

PutNode(q);

free(q);

}

//输出通讯录中的所有联系人信息

void OutPut(Linklist L)

{

Linklist p;

p=L->next;

printf("输出所有联系人信息:\n");

while(p!=NULL)

{

PutNode(p);

p=p->next;

}

}

//按姓名查找的函数

Linklist FindName(Linklist p)

{

char tem[N];

printf("\n请输入要查找同学的姓名:\n");

scanf("%s",tem);

while(p!=NULL){

if(!strcmp(p->Name,tem))

return p;

else

p=p->next;

}

return NULL;

}

//按联系电话查找的函数

Linklist FindTel(Linklist p)

{

char tem[N];

printf("\n请输入要查找同学的联系电话:\n");

scanf("%s",tem);

while(p!=NULL){

if(!strcmp(p->Tel,tem))

return p;

else

p=p->next;

}

return NULL;

}

相关文档
最新文档