链表通讯录(增删改查)最初版本

这是一个使用链表数据结构实现的通讯录系统,包括增、删、改、查功能。程序定义了一个Linklist结构体,包含姓名、电话、地址等字段,并通过指针操作实现了列表的遍历和数据更新。用户可以通过菜单选择不同的操作,如显示所有联系人、添加新联系人、搜索联系人、更新联系人信息或删除联系人。
摘要由CSDN通过智能技术生成

#include<stdio.h>
#include<stdlib.h>

struct Linklist
{
int no;
char name[20];
char num[13];
char addr[50];
struct Linklist * next;
};

typedef struct Linklist Linklist;
typedef struct Linklist *LNode;

void output(Linklist *L)
{
Linklist *p;
p = L->next;
puts(“no\tname\tnum\taddress”);
puts("==== \t====\t====\t====");
int count = 1;
while§
{
printf("%d\t%s\t%s\t%s\n",count,p->name,p->num,p->addr);
p = p->next;
count++;
}
}

void add(Linklist *L)
{
Linklist *p,*s;
p = L;
while(p->next)
{
p = p->next;
}
s = (LNode)malloc(sizeof(Linklist));
printf(“name:”);
scanf("%s",s->name);
printf(“num:”);
scanf("%s",s->num);
printf(“addr:”);
scanf("%s",s->addr);
s->next = NULL;
p->next = s;
}

void search(Linklist *L)
{
Linklist *p;
p = L;
int n;
puts(“search which?”);
scanf("%d",&n);
int i;
for(i = 1;i < n + 1;i++)
{
p = p->next;
}
if(p == NULL)
{
puts(“empty!”);
}
else
{
printf("%s\t",p->name);
printf("%s\t",p->num);
printf("%s\t",p->addr);
printf("\n");
}
}

void update(Linklist *L)
{
Linklist *p;
p = L;
int n;
puts(“update which?”);
scanf("%d",&n);
int i;
for(i = 1;i < n + 1;i++)
{
p = p->next;
}
if(p == NULL)
{
puts(“empty!”);
}
else
{
printf(“name:”);
scanf("%s",p->name);
printf(“num:”);
scanf("%s",p->num);
printf(“addr:”);
scanf("%s",p->addr);
}
}

void del(Linklist *L)
{
Linklist *p,*q;
p = L;
int n;
puts(“delete which?”);
scanf("%d",&n);
int i;
for(i = 1;i < n;i++)
{
p = p->next;
}
if(p == NULL)
{
puts(“empty!”);
}
else
{
q = p->next;
p->next = q->next;
free(q);
printf (“该好友已成功删除\n”);
}
}

int menu()
{

printf ("*******************************************************\n");

printf ("* 通讯录 *\n");

printf ("*******************************************************\n");

printf ("* 1)列表信息 *\n");

printf ("* 2)修改信息 *\n");

printf ("* 3)删除好友 *\n");

printf ("* 4)添加好友 *\n");

printf ("* 5)查找好友 *\n");

printf ("* 0)退出 *\n");

printf ("*******************************************************\n");

printf ("*******************************************************\n\n");

}

int main()
{
Linklist *L;
int i;
L = (LNode)malloc(sizeof(Linklist));
L->next = NULL;
while(1)
{
menu();
printf(“请输入:\n”);
scanf("%d",&i);
switch(i)
{
case 1:
output(L);
break;
case 2:
update(L);
break;
case 3:
del(L);
break;
case 4:
add(L);
break;
case 5:
search(L);
break;
case 0:
exit(0);
break;
default:
break;
}
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值