链表直接插入排序的问题
void sort(stu *head)//直接插入排序(由小到大)
{
printf("---------------------------学生成绩管理系统--------------------------\n");
printf("---------------------------------------------------------------------\n\n\n\n");
printf("输出排序后:\n");
stu *first;
stu *t;
stu *p;
stu *q;
first = head->next;
head->next = NULL;
while (first != NULL)
{
for (t = first, q = head; ((q!= NULL) && (q->NUM < t->NUM)); p = q, q = q->next);
first = first->next;
if (q == head)
{
head = t;
}
else
{
p->next = t;
}
t->next = q;
printf("姓名:%s 学号:%d 性别:%s 英语:%d 数学:%d 计导:%d C语言:%d\n", t->Name, t->NUM, t->sex, t->score.eng_, t->score.mat_, t->, t->score.clg_);
}
getchar();
system("cls");
}
为什么输入的是3个学生的信息,排序只输出一个学生的信息,求大神帮帮忙