C语言版用链表实现通讯录

“标头.h”

#include

#include

#include

#define Len sizeof(Lnode)

int seat;//全局变量,用于存储通讯录成员信息

typedef struct Lnode

{

int number; //学号

char name[20];//名字

double telenum;//电话

struct Lnode *next;//定义一个指向下一个节点的指针

} Lnode,*LinkList;//把struct Lnode*重定义为LinkList

LinkList creatIncreLink();

void deleteElem(LinkList l,int i);

int delName(LinkList l,char name[]);

int delNum(LinkList l,int n);

void insertYouxu(LinkList l,LinkList Elem);

void printList(LinkList l);

LinkList prior(LinkList l,LinkList p);

int searchName(LinkList l,char name[]);

int searchNum(LinkList l,int n);

#include

#include"标头.h"

LinkList creatIncreLink()

{

LinkList p;

int num=1,number;

double telenum;

char name[20],temp;

LinkList L,P;

L=(LinkList)malloc(Len); //创建头结点

L->next = NULL;

printf("请输入学生学号、姓名和电话号码,建立通讯录,以'-1'为输入结果标志\n");

printf("请输入学号 %d:");

scanf("%d",&number);

printf("请输入姓名 %d:");

temp=getchar();

gets(name);

printf("请输入电话号码 %d:");

scanf("%lf",&telenum);

while (number >= 0)

{

p = (LinkList)malloc(Len); //新分配结点

p->number = number;

p->telenum = telenum;

strcpy(p->name,name);

insertYouxu(L,p); //有序地插入新结点

num++;

printf("请输入学号 %d:",&num);

scanf("%d",&number);

printf("请输入姓名 %d:",num);

temp=getchar();

gets(name);

printf("请输入电话号码 %d:",num);

scanf("%lf",&telenum);

}

return(L);

}

void deleteElem(LinkList l,int i) //删除函数

{

LinkList p=l,q;//让p指向l

int j=0;//循环变量j

while(p->next&&j

{

p=p->next;

j++;

}

if(p->next==0) //判断下一个元素是否为空

printf("ERROR");

q=p->next;//将p指向第i个元素

p->next=q->next;//p的next指向q的next

free(q);//释放q链表

}

int delName(LinkList l,char name[])

{

int flag=0;

LinkList p=l->next;

seat=1;

if(l->next==NULL)

pri

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐