/*============================================================
语法格式: STU * order(STU * head)
实现功能: 采用选择法,对指定链表按序号进行排序(只交换数据域)
参数传递:
head待排序的链首址
返回值: 排好序的链表head指针
=============================================================*/
STU * order(STU * head)
{
STU temp;
STU *pf = NULL,*pb = NULL;
pb = pf = head;
if(head == NULL)
{
printf("list is empty\n");
return NULL;
}
while( pf->next != NULL )
{
pb = pf->next;
while( pb!= NULL )
{
if( pf->number > pb->number )
{
/*交换结构体变量中的所有成员*/
temp = *pb;
*pb = *pf;
*pf = temp;
/*把指针再给换回去,这样可以维持链表的连续性*/
temp.next = pb->next;
pb->next = pf->next;
pf->next = temp.next;
}
pb = pb ->next;
}
pf = pf->next;
}
return (head);
}