C语言单链表按数字大小排序,C语言单链表的3种排序算法,插入排序,冒泡排序,选择排序...

//插入排序

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值