UfnCod3r
چهارشنبه 25 بهمن 1391, 19:05 عصر
سلام
من می خوا م لیست پیوندی یک طرفه رو مرتب کنم ! می خوایم جای اشاره گر ها عوض بشه نه اینکه مقدار عضو ها تغییر کنه !
هرچی کشتم چیز خوبی پیدا نکردم ! اخر خودم اینو نوشتم ! کار می کنه ولی انگار درست مرتب نمی کنه !
class XObject
{
XObject* next;
int depth;
//...
};
class Scene
{
XObject* startObj;
XObject* endObj;
void sort();
//...
};
void Scene::sort()
{
XObject* $objA = startObj;
XObject* $objAPre = NULL;
while($objA)
{
XObject* $objB = $objA;
XObject* $objBPre = $objAPre;
XObject* $objBNext;
while($objB)
{
$objBNext = $objB->next;
if($objBNext)
{
if($objB->depth > $objBNext->depth)
{
if($objBPre)
{
if($objBNext->next)
{
$objBPre->next = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
}
else
{
$objBPre->next = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
startObj = $objB;
}
}
else
{
if($objBNext->next)
{
startObj = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
}
else
{
startObj = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
endObj = $objB;
}
}
}
}
$objBPre = $objB;
$objB = $objB->next;
}
$objAPre = $objA;
$objA = $objA->next;
}
}
لطفا یکی این مرتب سازیشو برام بنویسه خسته شدم !
:گریه:
:گریه:
من می خوا م لیست پیوندی یک طرفه رو مرتب کنم ! می خوایم جای اشاره گر ها عوض بشه نه اینکه مقدار عضو ها تغییر کنه !
هرچی کشتم چیز خوبی پیدا نکردم ! اخر خودم اینو نوشتم ! کار می کنه ولی انگار درست مرتب نمی کنه !
class XObject
{
XObject* next;
int depth;
//...
};
class Scene
{
XObject* startObj;
XObject* endObj;
void sort();
//...
};
void Scene::sort()
{
XObject* $objA = startObj;
XObject* $objAPre = NULL;
while($objA)
{
XObject* $objB = $objA;
XObject* $objBPre = $objAPre;
XObject* $objBNext;
while($objB)
{
$objBNext = $objB->next;
if($objBNext)
{
if($objB->depth > $objBNext->depth)
{
if($objBPre)
{
if($objBNext->next)
{
$objBPre->next = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
}
else
{
$objBPre->next = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
startObj = $objB;
}
}
else
{
if($objBNext->next)
{
startObj = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
}
else
{
startObj = $objBNext;
XObject* $tmp = $objBNext->next;
$objBNext->next = $objB;
$objB->next = $tmp;
endObj = $objB;
}
}
}
}
$objBPre = $objB;
$objB = $objB->next;
}
$objAPre = $objA;
$objA = $objA->next;
}
}
لطفا یکی این مرتب سازیشو برام بنویسه خسته شدم !
:گریه:
:گریه: