c语言编程问题求助
关于学生选修课程系统,已经基本完成了,就是增加课程也就是链表的插入这一块有问题,比如我要增加课程,的确增加了,但是同时覆盖了前面的课程这是那部分代码,哪里有问题啊
void managementc()//课程管理主函数
{
struct course * incourse;
int i,num1;
printf("\t\t\t课程管理\n");
printf("1.课程录入\n");
printf("2.返回主菜单\n");
printf("请选择(1~2):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incourse=(struct course *)malloc(sizeof(struct course));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d", &COU.num1);
scanf("%s", COU.name1);
scanf("%d", &COU.score);
scanf("%d", &COU.Melepeo);
incourse->nelepeo=0;
insertc(incourse);
break;
}
case(2):
break;
}
}
void insertc(struct course *incourse)//课程管理子函数(增加课程)
{
struct course *p0,*p1,*p2;
p1=head1;
p0=incourse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
while((p0->num1 > p1->num1) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num1 <= p1->num1)
{
if(head1==p1) head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
}