链表的逆序
程序中的结构体定义:
typedef struct people
{
int num;
char name[32];
double wage;
struct people *next;
}PEO;
原理图
代码实现:
PEO * reverse_link(PEO *head)
{
if (head == NULL)/判断链表是否存在/
{
printf("link not found\n");
return head;
}
else
{
PEO *pb = head, *pr = head;
pb = head->next;
head->next = NULL;
while (pb != NULL)
{
pr = pb->next;
pb->next = head;
head = pb;
pb = pr;
}
printf("逆序成功\n");
}
return head;
}
链表排序
PEO * sort_link(PEO *head)
{
if (head == NULL)//判断链表是否存在
{
printf("link not found \n");
return head;
}
else
{
PEO *pf = head, *pb = head->next;
while (pb != NULL)//选择法排序
{
while (pb != NULL)
{
if (pf->num > pb->num)//由小到大排
{
PEO tmp;
tmp = *pf;
*pf = *pb;
*pb = tmp;
tmp.next = pf->next;
pf->next = pb->next;
pb->next = tmp.next;
}
pb = pb->next;
}
pf = pf->next;
pb = pf->next;//保证pf在pb的前面
}
printf("对num排序成功\n");
return head;
}
}