#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("是否輸入新數(shù)據(jù)?(y/n):");? ?? ? ?while(toupper(ch=getchar())=='Y')? ? {? ? ? p1=(struct student * )malloc(LEN);? ? ? a++;? ? ? printf("\n請(qǐng)輸入:");? ? ? scanf("%ld,%f",&p1->num,&p1->score);? ? ? printf("是否輸入新數(shù)據(jù)?(y/n):");? ? ? scanf("%ld,%f",&p1->num,&p1->score);? ? ? getchar();? ? ? printf("是否輸入新數(shù)據(jù):?(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輸入所要插入節(jié)點(diǎn)的數(shù)據(jù):");? ? 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學(xué)生學(xué)號(hào):%d,成績(jī):%4.1f",p->num,p->score); p=p->next; }}struct student *del(struct student *head){ struct student *p1,*p2; long num; printf("\n請(qǐng)輸入所要?jiǎng)h除的學(xué)號(hào):"); scanf("%ld",&num); if(head==NULL) { printf("\n鏈表為空!\n"); return(head); } if(head->num==num) { printf("刪除學(xué)號(hào):%ld,成績(jī)%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;//用于指向結(jié)構(gòu)體變量 stu=creat(); stu=insert(stu); print(stu); stu=del(stu); print(stu);}
- 3 回答
- 0 關(guān)注
- 1362 瀏覽
添加回答
舉報(bào)
0/150
提交
取消