33,321
社区成员




class list_Graduate {
public:
Graduate* listhead;
Graduate* create(int n);
Graduate* create_null(int n);
Graduate* find(int n);
Graduate* move(int n);
Graduate* add(int n);
Graduate* bubble_sort();
void output();
void newfile(char* )const;
void loadfile(char* name)const;
};
Graduate* list_Graduate::bubble_sort(){
//排序函数
Graduate* p1;
Graduate* stu;
Graduate* p2;
Graduate* p0=NULL;
if(listhead==NULL || listhead->next==NULL) //没有结点或只有一个结点,直接退出。
return listhead;
if(listhead->next->next) //有两个结点,交换两个结点后退出。
{
if(listhead->get_sum()<listhead->next->get_sum())
{
stu=listhead;
listhead=listhead->next;
listhead->next=stu;
stu->next=NULL;
}
}
if(!listhead->next->next->next)return listhead;
while(p0!=listhead->next->next) //三个以上结点排序,使用冒泡排序法
{
p1=listhead;
stu=p1->next;
p2=stu->next;
while(p2!=p0)
{
if(stu->get_sum()<p2->get_sum())
{
Graduate* p;
p1->next=p2;
stu->next=p2->next;
p2->next=stu;
p=stu;stu=p2;p2=p;
}
p1=p1->next;stu=stu->next;p2=p2->next;
}
p0=stu;
}
if(listhead->get_sum()<listhead->next->get_sum())//特殊考虑前两个结点
{
stu=listhead;
listhead=listhead->next;
stu->next=listhead->next;
listhead->next=stu;
}
return listhead;
}