链表

来源:互联网 发布:找淘宝推广团队合作 编辑:程序博客网 时间:2024/05/22 14:47
#include<stdio.h>#include<malloc.h>#define NULL 0#define LEN sizeof(struct student)struct student{long 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("%ld,%f",&p1->num,&p1->score);head=NULL;while(p1->num!=0){n++;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student*)malloc(LEN);scanf("%ld,%f",&p1->num,&p1->score);}p2->next=NULL;return head;} int print(struct student *head)//链表的输出{struct student *p;printf("\nNow ,These %d records are:\n",n);p=head;if(head!=NULL)do{printf("%ld,%5.1f\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;elsep2->next=p1->next;printf("delete:%ld\n",num);n=n-1;}elseprintf("%ld not been found!\n",num);return head;}struct student *insert(struct student *head,struct 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->num)<=(p1->num))   {if(head==p1)head=p0;elsep2->next=p0;p0->next=p1;       }else{p1->next=p0;p0->next=NULL;}}n++;return head;}int 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(head,del_num);     print(head);     printf("\ninput 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(head,stu);    print(head);    printf("\ninput the inserted record:");    stu=(struct student *)malloc(LEN);    scanf("%ld,%f",&stu->num,&stu->score);}}

0 0
原创粉丝点击