PDA

View Full Version : سوال: درج و حذف ازلیست پیوندی



mahsha khanoom
جمعه 18 اردیبهشت 1388, 09:05 صبح
سلام میخواستم ببینم چطوری میتونم یه لیست پیوندی دو طرفه پیاده سازی کنم که بتونه عملیات درج و حذف ازلیست و درج و حذف خود لیست رو داشته باشه؟

tdkhakpur
جمعه 18 اردیبهشت 1388, 15:45 عصر
سلام:
این خواسته شما در حد مکی نیست که کلا همه جزئیات رو براتون بیارم ولی راهنمائیتون میکنم بهر حال خودتون بکار بگیرید.


void *FirstLink;
void *LastLink;
typedef struct MyLinkList
{
void *NextLink;
void *PrevLink;
char *Data;
}MyLink;


1- با دستور new یه ساختار از حافظه بگیرید و آدرس اون رو داخل FirstLink قرار بدید.
2 - حالا شما اولین لینک که نقطه شروع است رو دارید و برای اینکه معلوم بشه فعلا قبل و بعد از این لینک هیچ لینکی قرار نداره بصورت زیر عمل کن


MyLink *mylink;
FirstLink = (void *)new char[sizeof(mylink)];
mylink = (MyLink *)FirstLink;
mylink->NextLink = NULL;
mylink->PrevLink = NULL;
LastLink = FirstLink;

3 - در فوق اولین لینک رو دارید حال به روش فوق با new دومین لینک رو ساخته و بصورت زیر جاگذاری کنید


mylink = (MyLink *)LastLink;
mylink->NextLink = (void *)new char[sizeof(mylink)];
mylink = (MyLink*)mylink->NextLink;
mylink->NextLink = NULL;

در اینجا آدرس PrevLink ساختار جدید رو با لینک قبلی وصل کنید


mylink->PrevLink = (void)LastLink;
LastLink = (void*)mylink;

به همین تر تیب با کمی تغییر میتونید یه سلسله لینک رو بهم وصل کنید
حالا با توجه به آدرسها و محل دقیق ساختارها توی حافظه میتونی عملیات خذف و درج رو روش انجام بیدی.
آسون نیست ولی کدهای بالا کمکتون میکنه.
موفق باشید...