C语言单链表的3种排序算法,插入排序,冒泡排序,选择排序
来源:互联网 发布:知乎如何提问 编辑:程序博客网 时间:2024/06/06 05:41
//插入排序
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;
}
阅读全文
0 0
- C语言单链表的3种排序算法,插入排序,冒泡排序,选择排序
- C语言单链表的3种排序算法,插入排序,冒泡排序,选择排序
- C语言常用的几种排序算法代码(选择排序,冒泡排序,插入排序,快速排序)
- C语言排序算法集锦:选择排序,冒泡排序,插入排序,希尔排序,归并排序,堆排序,快排序
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 【算法】插入排序/冒泡排序/选择排序
- 《算法》选择排序、插入排序、冒泡排序
- 冒泡排序、插入排序、选择排序--C语言实现
- C语言中冒泡排序,插入排序,选择排序
- 【C语言】冒泡排序,选择排序,插入排序
- c语言实现选择排序、冒泡排序、插入排序
- 排序算法----冒泡排序+插入排序+选择排序+快速排序+希尔排序+堆排序+归并排序+计数排序+基数排序+桶排序(c语言)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- java后台如何将rgb与16进制颜色进行转换
- Invalid bean definition with name 'dataSource' defined in class
- JAVA的23种设计模式---门面模式
- Android项目架构--知识体系简单梳理(一)
- css中position属性
- C语言单链表的3种排序算法,插入排序,冒泡排序,选择排序
- 数据结构顺序线性表C++模板
- 今日头条给我发工资744.53元 坚持原创终于有了回报
- 阿里顺丰互相拉黑,惊动国家邮政局 刘强东公开力挺顺丰
- 9.外层build.gradle文件详解
- Android_Fire
- 初学Java006 运算符及条件结构
- Ionic2跨平台项目(一)简单探讨及iOS项目创建
- 会话,进程组,作业控制