רשימה מקושרת של XOR – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Yonidebot (שיחה | תרומות)
מ בוט החלפות: זיכרון;
Yonidebot (שיחה | תרומות)
מ בוט החלפות: תאורטי;
שורה 9:
לדוגמה, כאשר עוברים על הרשימה משמאל לימין, אם אנו נמצאים בתא B, אנו ניקח את הכתובת של התא הקודם - A - ונבצע עליו פעולת XOR יחד עם הערך שנמצא במשתנה בתא B. כתוצאה מהפעולה, נקבל את כתובת התא C ונוכל להמשיך לעבור על הרשימה. בדומה, אם נלך מהכיוון ההפוך, אנו ניקח את הכתובת של תא C ונפעיל עליו פעולת XOR יחד עם הערך שנמצא במשתנה בתא B, כדי לקבל את כתובת A.
 
מכך יוצא שבכדי לעבור על הרשימה בכיוון כלשהו מנקודה מסוימת, אנו נזדקק לכתובות של שני תאים סמוכים, ולא רק אחד כמו ברשימה מקושרת רגילה. למרות זאת, זהו חסכון ניכר בזיכרון - אנו נזדקק למספר קבוע של משתנים (שניים) כדי להחזיק את הכתובות של התאים הרצויים, ונחסוך בחצי הזיכרון שדרוש לרשימה מקושרת דו צדדית רגילה (גודלו של זיכרון זה תלוי ברשימה ולכן אינו קבוע ויכול, תיאורטיתתאורטית, להיות בלתי מוגבל).
 
למרות החסכון בזיכרון, השימוש בטריק [[תכנות|התכנותי]] הזה אינו מקובל או מומלץ מהסיבות הבאות: