可以帮我看下这个链表选择排序有什么问题么,输出不来,看上去像是没跳出循环一样(猜测)
//选择排序
void SeleteSort(Student* L)
{
Student* cur, * pre_cur, * p, * pre;
pre_cur = L;
cur = L->next;
printf("1.represent the chinese:\n");
printf("2.represent the math:\n");
printf("3.represent the english:\n");
int item;
printf("you choose subject:");
scanf_s("%d", &item);
switch (item)
{
case 1:
{
while (cur)
{
pre = cur;
p = cur->next;
while (p)
{
if (p->chinese > cur->chinese)
{
pre_cur->next = p;
p->next = cur->next;
pre->next = cur;
cur->next = pre->next->next;
}
p = pre->next->next;
pre = pre->next;
}
cur = pre_cur->next;
pre_cur = pre_cur->next;
}
break;
}
case 2:
{
while (cur)
{
pre = cur;
p = cur->next;
while (p)
{
if (p->math > cur->math)
{
pre_cur->next = p;
p->next = cur->next;
pre->next = cur;
cur->next = pre->next->next;
}
p = pre->next->next;
pre = pre->next;
}
cur = pre_cur->next;
pre_cur = pre_cur->next;
}
break;
}
case 3:
{
while (cur)
{
pre = cur;
p = cur->next;
while (p)
{
if (p->english > cur->english)
{
pre_cur->next = p;
p->next = cur->next;
pre->next = cur;
cur->next = pre->next->next;
}
p = pre->next->next;
pre = pre->next;
}
cur = pre_cur->next;
pre_cur = pre_cur->next;
}
break;
}
}
ShowList(L);//输出已排序链表
}