请教一个C语言程序设计的问题,关于动态链表中的某一数据进行怎样的操作能排序?算法思想?谢谢了.

2025-06-27 14:33:01
推荐回答(1个)
回答1:

/*============================================================
语法格式: 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);
}