70,023
社区成员




void bubble_sort(struct account *head)
{
int i,count = 0,num;//count记录链表结点的个数,num进行内层循环,
struct account *p,*q,*tail;//创建三个指针,进行冒泡排序
struct account *add_head=NULL;
add_head=(struct account *)malloc(LEN); //这上下三行主要是加一个头节点,使第一行数据参与到冒泡中
add_head->next=head;
p = add_head;
while(p->next != NULL)
{
count++;
p = p->next;
}
for(i=0;i < count - 1;i++)
{
num = count - i - 1;
q=add_head->next;//令q指向第一个结点
p=q->next;//令p指向后一个结点
tail=add_head;//让tail始终指向q前一个结点,方便交换,也方便与进行下一步操作
while(num--)
{
if(strcmp(q->name , p->name)>0)
{
q->next=p->next; //先让q的下一个指向p的下一个,跳过p
p->next=q;//再让p的下一个指向q
tail->next=p; //最后让头节点指点p
}
tail = tail->next;
q=tail->next;
p=q->next;
}
}
mem_print(add_head->next);//直接给它next不香吗,枉费我绞尽脑汁!!!!!!
}