本帖最后由 jhq999 于 2022-5-11 16:24 编辑
struct Node *end=NULL,*q;//////////没测试只是个思路
for (p=head; p->next; p=p->next)
{
for (q=head;q->next!=end;q=q->next)
{
if (q->data>q->next->data)
{
Node t=*q;
q->data=q->next->data;
q->next->data=t.data;
}
}
end=q;
}
指针太麻烦了
struct Node list;
list.next=head;
while(1)
{
int flag=1;
for (prv=&list,q=list.next;q->next!=end;prv=q,q=q->next)
{
if (q->data>q->next->data)
{
flag=0;
prv->next=q->next;
q->next=prv->next->next;
prv->next->next=q;
q=prv->next;
}
}
//if (q!=list.next->next)
if(flag)
{
head=list.next;
break;
}
end=q;
}
head=list.next;
|