首先定義一個結構體,如:
struct studentData
{
char sno[4]; /*學號*/
char sname[21]; /*姓名*/
int age; /*年齡*/
int score[5]; /*五門成績*/
};
再定義構成單鏈表的結點:
struct student
{ /*數據域*/
struct studentData info;
struct student *next;/*指針域*/
};
下面是選擇排序:
void OrderBySnoAsc(){ //以學號按升序排序
struct student *p,*q,*min;
struct studentData temp; //交換時用到的臨時變量
for(p=head;p != NULL;p=p->next){
min=p;
for(q=p->next;q != NULL;q=q->next)
if(strcmp(min->info.sno,q->info.sno)>0)
min=q;
if(min!=p){
temp=min->info; min->info =p->info; p->info=temp;
}
}
}
以下是冒泡排序:
void OrderBySnoAsc(){ //以學號按升序排序
struct student *p,*q;
struct studentData temp; //交換時用到的臨時變量
for(p=head;p!=NULL;p=p->next)
{
for(q=head;q->next!=NULL;q=q->next)
{
if(strcmp(q->info.sno,q->next->info.sno)>0)//相鄰的兩個之間比較
{
temp=q->info; q->info =q->next->info; q->next->info=temp;
}
}
}
}