//插入排序
stu *view_sort_math(stu *head)
{
struct student *first;
struct student *t;
struct student *p;
struct student *q;
first = head->next;
head->next = NULL;
while (first != NULL)
{
for (t = first, q = head; ((q != NULL) && (q->chinese > t->chinese)); p = q, q = q->next);
first = first->next;
if (q == head)
{
head = t;
}
else
{
p->next = t;
}
t->next = q;
}
return head;
}
//冒泡排序
stu *view_sort_chinese(stu *h)
{
stu *endpt,*u,*v,*p;
u = (stu *)malloc(sizeof(stu));
u->next=h;
h=u;
for(endpt=NULL;endpt!=h;endpt=p)
{
for(p=u=h;u->next->next!=endpt;u=u->next)
{
if(u->next->chinese < u->next->next->chinese)
{
v=u->next->next;
u->next->next=v->next;
v->next=u->next;
u->next=v;
p=u->next->next;
}
}
}
u=h;
h=h->next;
return h;
}
//选择排序
stu *view_sort_c(stu *shead)
{
struct student *pfirst;
struct student *ptail;
struct student *pminBefore;
struct student *pmin;
struct student *p;
pfirst = NULL;
while (shead != NULL)
{
for (p = shead, pmin = shead; p->next != NULL; p = p->next)
{
if (p->next->math > pmin->math)
{
pminBefore = p;
pmin = p->next;
}
}
if (pfirst == NULL)
{
pfirst = pmin;
ptail = pmin;
}
else
{
ptail->next = pmin;
ptail = pmin;
}
if (pmin == shead)
{
shead = shead->next;
}
else
{
pminBefore->next = pmin->next;
}
}
if (pfirst != NULL)
{
ptail->next = NULL;
}
shead = pfirst;
print_stu_list(shead);
return shead;
}
stu *view_sort_math(stu *head)
{
struct student *first;
struct student *t;
struct student *p;
struct student *q;
first = head->next;
head->next = NULL;
while (first != NULL)
{
for (t = first, q = head; ((q != NULL) && (q->chinese > t->chinese)); p = q, q = q->next);
first = first->next;
if (q == head)
{
head = t;
}
else
{
p->next = t;
}
t->next = q;
}
return head;
}
//冒泡排序
stu *view_sort_chinese(stu *h)
{
stu *endpt,*u,*v,*p;
u = (stu *)malloc(sizeof(stu));
u->next=h;
h=u;
for(endpt=NULL;endpt!=h;endpt=p)
{
for(p=u=h;u->next->next!=endpt;u=u->next)
{
if(u->next->chinese < u->next->next->chinese)
{
v=u->next->next;
u->next->next=v->next;
v->next=u->next;
u->next=v;
p=u->next->next;
}
}
}
u=h;
h=h->next;
return h;
}
//选择排序
stu *view_sort_c(stu *shead)
{
struct student *pfirst;
struct student *ptail;
struct student *pminBefore;
struct student *pmin;
struct student *p;
pfirst = NULL;
while (shead != NULL)
{
for (p = shead, pmin = shead; p->next != NULL; p = p->next)
{
if (p->next->math > pmin->math)
{
pminBefore = p;
pmin = p->next;
}
}
if (pfirst == NULL)
{
pfirst = pmin;
ptail = pmin;
}
else
{
ptail->next = pmin;
ptail = pmin;
}
if (pmin == shead)
{
shead = shead->next;
}
else
{
pminBefore->next = pmin->next;
}
}
if (pfirst != NULL)
{
ptail->next = NULL;
}
shead = pfirst;
print_stu_list(shead);
return shead;
}