typedef struct _s_node
{
int value;
_s_node *next;
}NODE;
void show(NODE *head)
{
NODE *p=head;
while (p)
{
cout<<p->value<<endl;
p=p->next;
}
}
int sort(NODE **head)
{
NODE *p=*head;
NODE *r,*q,*t;
NODE *pre=NULL;
NODE *rpre=NULL;
while (p)
{
r=p;
q=p->next;
rpre=pre;
while (q)
{
if (r->value>q->value)
{
do
{
rpre=r;
r=r->next;
}while (r!=q);
}
q=q->next;
}
if (r==p->next)
{
t=p->next;
p->next=r->next;
r->next=p;
if (p==*head)
{
*head=r;
}
if (pre)
{
pre->next=r;
}
p=r;
}
else if (r!=p)
{
t=p->next;
p->next=r->next;
r->next=t;
if (p==*head)
{
*head=r;
}
if (pre)
{
pre->next=r;
}
if (rpre)
{
rpre->next=p;
}
p=r;
}
pre=p;
p=p->next;
}
return 0;
}
int main()
{
NODE a;
a.value=6;
a.next=NULL;
NODE *head=&a;
NODE *p=new NODE;
p->value=1;
p->next=NULL;
head->next=p;
NODE *q=new NODE;
q->value=4;
q->next=NULL;
p->next=q;
NODE *t=new NODE;
t->value=5;
t->next=NULL;
q->next=t;
sort(&head);
show(head);
delete p,q;
return 0;
}
链表排序
最新推荐文章于 2024-04-28 22:49:45 发布