求一份100行左右的C语言程序,求4个C语言程序 每个100行左右 大一水平的

2008-06-30 回答

//链表问题

//电话薄实现:可以输入,输出,插入,删除联系人信息.

#include

#include

#include

typedef struct student

{

char address[20];

char name[20];

char mail[7];;

char phone[10];

struct student *next;

}LNode;

void creat_list( LNode **h ) //请输入联系人信息

{

LNode * p;

int i;

char temp_number[20];

(*h)=(LNode *)malloc(sizeof(LNode));

(*h)->next=NULL;

printf("请输入联系人信息:\n");

printf("请输入联系人姓名,以000结束\n");

scanf("%s",temp_number);

while(strcmp(temp_number,"000"))

{

p=(LNode *)malloc(sizeof(LNode));

strcpy(p->name, temp_number);

printf("请输入联系人地址\n");

scanf("%s",temp_number);

strcpy(p->address, temp_number);

printf("请输入联系人电话号码\n");

scanf("%s",temp_number);

strcpy(p->phone, temp_number);

printf("请输入联系人邮政编码\n");

scanf("%s",temp_number);

strcpy(p->mail, temp_number);

printf("请输入联系人姓名,以000结束\n");

scanf("%s",temp_number);

p->next=(*h)->next;

(*h)->next=p;

}

}

//输出电话本

void print_list(LNode *L)

{

LNode *p;

printf("\t姓名\t地址\t邮政编码\t电话号码\n");

p=L->next;

//printf("\n1\n");

if(!p)

{

printf("error\n");

}

//printf("\n3\n");

while (p)

{

printf("\t%s\t%s\t%s\t%s\n", p->name, p->address, p->mail, p->phone);

p=p->next;

}

//printf("\n2\n");

}

// 在第i 个联系人前插入

void ListInsert_L(LNode *L,int i)

{

int j=0;

LNode *s,*p;

char temp_number[20];

p=L;

s=(LNode *)malloc(sizeof(LNode));

if(!s)

{

printf("error\n");

return;

}

printf("请输入联系人姓名\n");

scanf("%s",&temp_number);

strcpy(s->name, temp_number);

printf("请输入联系人地址\n");

scanf("%s",temp_number);

strcpy(s->address, temp_number);

printf("请输入联系人电话号码\n");

scanf("%s",temp_number);

strcpy(s->phone, temp_number);

printf("请输入联系人邮政编码\n");

scanf("%s",temp_number);

strcpy(s->mail, temp_number);

while (p&&j

{

p=p->next;

j++;

}

if (!p||j>i-1)

{

printf("error\n");

return;

}

s->next=p->next;

p->next=s;

}

//删除第i个联系人

void ListDelete_L(LNode *L, int i)

{

LNode *p, *q;

int j;

p = L;

j = 0;

while (p->next && j < i-1) // 寻找第 i 个结点,并令 p 指向其前趋

{

p = p->next;

j++;

}

if (!(p->next) || j > i-1) // 删除位置不合理

{

printf("error\n");

return;

}

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

free(q);

}

void main()

{

LNode *L;

int choice,i;

printf("输入功能号choice,\n\t为1时输入联系人,\n\t为2时输出电话本,\n\t为3时插入联系人,\n\t为4时删除联系人\n\t为0时结束\n");

scanf("%d",&choice);

while(choice)

{

switch (choice)

{

case 1:creat_list(&L);

break;

case 2:print_list(L);

break;

case 3:printf("请输入要插入元素的位置i:\n");

scanf("%d",&i);

ListInsert_L(L,i);

break;

case 4:printf("请输入你要删除元素的位置\n");

scanf("%d",&i);

ListDelete_L(L, i) ;

break;

default:

printf("输入错误\n");

}

printf("输入功能号choice,\n\t为1时输入联系人,\n\t为2时输出电话本,\n\t为3时插入联系人,\n\t为4时删除联系人\n\t为0时结束\n");

scanf("%d",&choice);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值