69,382
社区成员
发帖
与我相关
我的任务
分享
link *Sort1(link *head)
{
link *h, *p, *q, *r, *s;
h=p=(link *)malloc(sizeof(link));
p->next = head;
//p 控制循环比较的次数
while (p->next!=NULL) //从链表的第一个数据开始,循环比较
{
r = p;
q = p->next;
while (q->next!=NULL) //第一次循环找出最小的,第二次循环找出第二小的。。。。。
{
if (q->next->data < r->next->data)//如果后面的数据小于前面的
r = q; //则让r指向它
q = q->next; //q后移
}
if (r != p) //这一段感觉有问题,反正算法是将最小的记录下来,然后继续下一轮比较
{
s = r->next;
r->next = s->next;
s->next = p->next;
p->next = s;
}
p = p->next;
}
head = h->next; //h都没参加运算,然后这里突然暴出来,应该是上面有点问题。
free (h);
return head;
}