关于链表的排序!请高手帮忙看看怎么弄?
#include <iostream.h>struct STU //结构体
{
int num;
char name[20];
float c_score;
STU *next;
};
STU *create() //建立链表函数
{
STU *head,*p1,*p2;
int n=0;
p1=p2=new STU;
cout<<"请输入数据:";
cin>>p1->num>>p1->name>>p1->c_score;
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=new STU;
cout<<"请输入数据:";
cin>>p1->num>>p1->name>>p1->c_score;
}
p2->next=NULL;
return head;
}
void print(STU *head) //链表的输出
{
STU *p1;
p1=head;
while(p1!=NULL)
{
cout<<p1->num<<" "<<p1->name<<" "<<p1->c_score<<endl;
p1=p1->next;
}
}
STU *sort(STU *head) //链表的排序
{
STU *p1,*newhead,*pa1,*p2,*p3,*temp;
p1=p2=head;
while(p1->num!=0)
{
if(p1->c_score<p1->next->c_score)
{
p2=p1->next;
p1->next=p2->next;
p2->next=p1;
p2=p1;
}
else
{
p2=p1=p1->next;
}
}
return head;
}
int main() //主函数
{
STU *head;
head=create();
// print(head);
head=sort(head);
print(head);
return 0;
}
本人自学,小菜高手勿笑。。。。。