根据已有链表中的元素进行排序

思想为先将链表中的每一个节点映射到一个链表节点为变量的数组里,在根据节点的元素进行排序,本程序为ave,过程中将数组变量排序,最后重新生成链

void paixu(LinkList head)//从大到小
{
int length=len(head),i=0,j=0,sum1[length],n1;
LinkList sum[length];
LinkList pa=head->next;
LinkList n,pb;
while(pa)
{
sum[i]=pa;
sum1[i]=pa->ave;
pa=pa->next;
i++;
}
for(i=0;i<length;i++)
{
for(j=i+1;j<length;j++)
{
if(sum1[i]<sum1[j])
{
n1=sum1[i];
sum1[i]=sum1[j];
sum1[j]=n1;//换分

n=sum[i];
sum[i]=sum[j];
sum[j]=n;//换链
}
}
}
pb=head;
for(i=0;i<length;i++)
{
pb->next=sum[i];//重新生成链
pb=pb->next;
}
pb->next=NULL;
}

posted @ 2023-06-11 16:33  通信小九  阅读(5)  评论(0编辑  收藏  举报