#include "stdio.h"#include<malloc.h>#include<string.h>#include<ctype.h>#define LEN sizeof(struct student)struct student{ long num; float score; struct student*next;};struct student*creat(){ struct student *head; struct student*p1,*p2; char ch; int a=0; head=NULL; printf("是否输入新数据?(y/n):"); while(toupper(ch=getchar())=='Y') { p1=(struct student * )malloc(LEN); a++; printf("\n请输入:"); scanf("%ld,%f",&p1->num,&p1->score); printf("是否输入新数据?(y/n):"); scanf("%ld,%f",&p1->num,&p1->score); getchar(); printf("是否输入新数据:?(y/n):"); if(a==1) { head=p1; p2=p1; } else { p2->next=p1; p2=p1; } p1->next=NULL; } return (head);}struct student * insert(struct student * head){ struct student *p0,*p1,*p2; p0=(struct student * )malloc(LEN); printf("\n输入所要插入节点的数据:"); scanf("%ld,%f",&p0->num,&p0->score); p1=head; if(head==NULL) { head=p0; p0->next=NULL; } else if(p1->num>p0->num) { p0->next=head; head=p0; } else { while(p1!=NULL) { if(p1->num<p0->num) { p2=p1; p1=p1->next; } else { p0->next=p1; p2->next=p0; break; } } if(p1==NULL) { p0->next=NULL; p2->next=p0; } } return(head); }/////void print(struct student *head){ struct student *p; p=head; while(p!=NULL) { printf("\n学生学号:%d,成绩:%4.1f",p->num,p->score); p=p->next; }}struct student *del(struct student *head){ struct student *p1,*p2; long num; printf("\n请输入所要删除的学号:"); scanf("%ld",&num); if(head==NULL) { printf("\n链表为空!\n"); return(head); } if(head->num==num) { printf("删除学号:%ld,成绩%4.1f",head->num,head->score); return(head); } else { p2=head; p1=head->next; while(p1!=NULL) { if(p1->num==num) { p2->next=p1->next; break; } else { p2=p1; p1=p1->next; } } return(head); } } void main( ){ struct student *stu;//用于指向结构体变量 stu=creat(); stu=insert(stu); print(stu); stu=del(stu); print(stu);}
- 3 回答
- 0 关注
- 1290 浏览
添加回答
举报
0/150
提交
取消