69,382
社区成员
发帖
与我相关
我的任务
分享
student *sort_finalGrade(student *head)
{
student *left = NULL;
student *miniNode = NULL;
student *end = head;
student *tmp = NULL;
int sorted;
do
{
end = head;
while(end!=miniNode)
{
left = end->next;
if(left != NULL)
{
if(end->stu_final_aver < left->stu_final_aver)
{
tmp = left->next;
left->next = end;
end->next = tmp;
/*end的前一个节点的next应该指向left了, 但没有修改仍指向end*/
}
}
end = end->next;
}
miniNode = end; /*退出循环时end总是NULL, 因此miniNode也总是NULL, 不会变化*/
head = left; /*应该是head = head->next吧*/
}while(head != miniNode);
return head; /*???*/
}
p1->p2->p3->
student *temp=p1->next->next;
p1->next->next=temp->next;
temp->next=p1->next;
p1->next=temp;