سلام
چطوری میتونم یک لیست پیوندی رو در زبان c مرتب سازی کنم؟
خیلی نیاز دارم هرکس میدونه لطف کنه بگه![]()
سلام
چطوری میتونم یک لیست پیوندی رو در زبان c مرتب سازی کنم؟
خیلی نیاز دارم هرکس میدونه لطف کنه بگه![]()
مثل يه آرايه معمولي منتها در ليست پيوندي با اشارهگر سر و كار داري كه آيتم بعدي و قبلي رو بدست بياري
سلام
به نظر من اگه از مرتب سازی درجی استفاده کنین خیلی راحت تر و سریعتر میشه مرتبش کرد البته اگه لیستت زیاد هستش heap بهتره
این الگوریتم رو یکی از دوستان بهم یاد داد ...
void list::sort()
{
node *p,*q,*z;
int flag,count=0;
cur=top;
while (cur)
{ ++count;
cur=cur->next;
}
for(int i=0;i<count;i++)
{
p=top;
q=top->next;
z=NULL;
for(int j=0;j<count-1;j++)
{ if((p->data > q->data) && p==top)
{ top=p->next;
p->next=q->next;
q->next=p;
flag=1;
}
else if(p->data > q->data)
{ z->next=q;
p->next=q->next;
q->next=p;
flag=1;
}
if(flag)
{ z=q;
q=p->next;
}
else
{ z=p;
p=q;
q=q->next;
}
flag=0;
}
}
}
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)