钟原和赵欣番外:急求单链表排序!!

来源:百度文库 编辑:高校问答 时间:2024/05/05 09:32:11
typedef struct s1
{
char no[11]; /*学号由10个字符组成*/
char name[15]; /*学生姓名*/
int score[N]; /*各门课成绩*/
float sum; /*总分*/
float average; /*平均分*/
int order; /*名次*/
struct s1 *next; /*指向后继结点的指针*/
}STUDENT; /*定义结构体类型*/

//已经建立好了链表

void sort()
{
.......
}

谁能帮我弄下怎么排序啊~~弄了一天都弄不出来~~我初学者~~拜托了~~
void sort( ) //排序
{
STUDENT *h,*h1,*p,*q,*t;
h=head;
h1=h->next;
while(h1!=NULL)
{
for(t=h1,p=q=h;((p!=NULL)&&(t->sum>q->sum));p=p->next)
h1=t->next;

if (q==head)
{
p=q;
h=t;
}
else
{
h1=t->next;
p=p->next;
q->next=t;
}
t->next=p;
}
p->next=NULL;
head=h;
}

谁能帮我改改!!!

pChain sortChain(pChain Head)
{
pChain ptemp=NULL,ppre=NULL,pcur=NULL,ppre2=NULL,pcur2=NULL,newHead=NULL,phead=NULL,pTMP=NULL;
phead=Head;
while(phead)
{
if(!phead->Next)
{
if(!newHead)
{
newHead=phead;
pTMP=newHead;
}
else
pTMP->Next=phead;
break;
}
ptemp=phead;
ppre=ptemp;
pcur=ptemp;
ppre2=ptemp;
pcur2=ptemp;
while(ptemp)
{
if(pcur2->data>ptemp->data)
{
ppre2=ppre;
pcur2=pcur;
}
ptemp=ptemp->Next;
ppre=pcur;
pcur=ptemp;
}
if(pcur2==phead)
{
phead=phead->Next;
pcur2->Next=NULL;
}
else
{
ppre2->Next=pcur2->Next;
pcur2->Next=NULL;
}
if(!newHead)
{
newHead=pcur2;
pTMP=newHead;
}
else
{
pTMP->Next=pcur2;
pTMP=pTMP->Next;
}

}
return newHead;
}

这是我以前写的一个链表排序的函数