用C语言编写通讯录

#include <stdio.h>

#include <malloc.h>

#define NULL 0

#define LEN sizeof(struct student)

struct student

{

long int num;

float score;

struct student*next;

};

int n;

struct student*creat(void)

{struct student*head;

struct student*p1,*p2;

n=0;

p1=p2=(struct student*)malloc(LEN);

scanf("%1d,%f",&p1->num,&p1->score);

head=NULL;

while(p1->num!=0)

{

n=n+1;

if(n==1)head=p1;

else p2->next=p1;

p2=p1;

p1=(struct student*)malloc(LEN);

sacnf("%ld,%f",&p1->num,&p1->score);

}

p2->next=NULL;

return(head);

}

 

 

 

 

void print(struct student *head)

{

       struct student *p;

       printf("/nNow,these%d records are:/n,n");

       p=head;

       if(head!=NULL)

              do

              {printf("%1d %5.1df/n",p->num,p->score);

              p=p->next;

              }

              while(p!=NULL);

}

 

 

 

 

 

 

 

 

 

struct student*del(struct student *head,long num)

{

       struct student *p1,*p2;

       if(head==NULL)

       {

       printf("/nlist null/n");

       return head;

       }

p1=head;

while(num != p1->num && p1->next!=NULL)

 

       {

       p2=p1;

       p1 = p1->next;

       }

 

       if(num==p1->num)

  {

              if(p1==head)head=p1->next

              else p2->next=p1->next;

 

    printf("delete%ld/n"num)

       n=n-1

  }

       else printf("%ld not been found!/n"num); 

 

  return(head)

}

 

 

struct student*insert(struct student *headstruct student *stud)

{struct student *p0*p1*p2;

p1=head

p0=stud

if(head==NULL) 

{head=p0; p0->next=NULL;}

else

 

{while((p0->num>p1->num) && (p1->next!=NULL))

{p2=p1;

p1=p1->next;}

if(p0->nump1->num)

{if(head==p1) head=p0;  

    else p2->next=p0;  

 

    p0->next=p1}

 

else

{p1->next=p0; p0->next=NULL;}}

n=n+1; 

return(head)

   }

 

main()

   {

       struct student *head*stu

long del-num

printf("input records/n")

head=creat()

print(head)

printf("/ninput the deleted number")

scanf("%ld"&del-num)

while(del-num=0)

{head=del(headdel-num)

print(head)

 

printf("input the deleted number")

scanf("%ld"&del-num)}

printf("/ninput the inserted record")

stu=(struct student)malloc(LEN)

scanf("%ld%f"&stu-num&stu-score)

while(stu-num=0)

{head=insert(headstu)

print(head)

printf("input the inserted record")

 

stu=(struct student)malloc(LEN)

scanf("%ld%f"&stu-num&stu-score)

}

 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值