#include "stdio.h"
#include<malloc.h>
#include<string.h>
#include<ctype.h>
#define LEN struct student
struct student{
long num;
float score;
struct student*next;
};
struct student*create()
{
char ch;
struct student *head;
struct student*p1,*p2;
int a=0;
printf("是否输入新数据:\n");
while(toupper(ch=getchar())=='Y')
{
p1=(LEN*)malloc(sizeof(LEN));
printf("num:");
scanf("%ld",&(*p1).num);
printf("score:");
scanf("%d",&(*p1).score);
getchar();//getchar吸收回车
printf("是否输入新数据:\n");
a++;
if(a==1)
head=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(sizeof(LEN));
printf("\n输入所要插入节点的数据:");
scanf("%ld,%f",&p1->num,&p1->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->next==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;//测试随便输
}
}
void main( )
{
struct student *stu;
stu=create();
stu=insert(stu);
print(stu);
}
相关分类