PDA

View Full Version : سوال: کمک برای رفع مشکل لیست پیوندی



jboloori
جمعه 04 اردیبهشت 1394, 19:56 عصر
سلام دوستان!
دارم لیست پیوندی کار میکنم و به یه مشکل برخوردم.
اضافه و نمایش و جست و جو در لیست رو نوشتم و درست کار میکنه.
اما نوبت حذف که میرسه اگه عنصر اول لیست باشه به درستی حذف میشه در غیر اینصورت خطا میده و خوب کار نمیکنه.
سورسم رو لطفا یه نگاه بندازید و اگه ممکنه مشکلم رو برطرف کنید.خیلی کلافم کرده (تازه با لیست پیوندی شروع کردم)

http://uplod.ir/4fnrcli2ndvg/ConsoleApplication1.rar.htm

مرسی

reza_noei
شنبه 05 اردیبهشت 1394, 00:06 صبح
سلام
شما برای حذف گره غیر اول از دستور زیر استفاده کرده اید :

else
{
q = first;
p = first->link;
while (p != NULL){
if (p->name == name){
q = p;
p = p->link;
}
q->link = p->link;
p->link = NULL;
delete p;
p = q->link;
}
}
در هنگام حذف از لیست پیوندی یک طرفه شما باید از دو متغییر گره جاری و گره بعدی و یا یک متغیر در روش بهینه تر استفاده کنید که کرده اید.
نکته ای که باید به آن توجه کنید این است که در هنگاه حذف گره باید در ابتدا ارتباطات ذنجیره وار لیست را باسازی کنید و سپس اقدام به حذف کنید.
یعنی اگر گره بعدی گره مد نظر باشد کافیست پیوند گره جاری را با مقدار پیوند گره بعدی پر نمائید و سپس اقدام به حذف گره بعدی نمائید.
کد شما اندکی آشفتگی دارد و انگار قرار نیست این کار را انجام دهد.

jboloori
شنبه 05 اردیبهشت 1394, 00:21 صبح
سلام . ممنون از بررسیتون
اما من هم دقیقا از دو متغیر استفاده کردم و سعی کردم اول بازسازی کنم.متغیر p گره جاری هست q هم پشت سرش حرکت میکنه.هرکار کردم بازم به مشکل خوردم.
میشه لطفا کد صحیحشو بنویسید؟