【文件属性】:
文件名称:排序jdl.cpp
文件大小:832B
文件格式:CPP
更新时间:2022-08-10 13:42:21
c++
自己做的以个c++代码:
#include
#include
struct node
{
int num, score;
struct node* link;
};//结点类型声明
node* creat(int n);//链表生成函数,尾插法
void print(node* h);//输出链表
node* index(node* h)//对单链表按从小到大的顺序进行排序
{
int i = 0;
if (h == 0 || h->link == 0)//排除链表只有一项或零项的情况
{
printf("排序完毕!\n");
return h;
};
node* p, * q,*r,*s;//p代表固定的比较对象,依次把他和后面的结点q比较交换
p=s = h;
while (p->link)
{
q = p->link;
if (p->num > q->num&&p==h)
{
h = q; p->link = q->link; q->link = p;
q = p; p = h; i++;
}
else if(p->num > q->num && p != h)
{
r = q; p->link = q->link; q->link = p; s->link = q;
q = p; p = r; i++;
}
s = p;
p = p->link;
};
printf("排序完毕!");
if (i) index(h);//递归调用index
return h;
}