ההבדל בין רשימה מקושרת לבין רשימה מקושרת
רשימה מקושרת לעומת רשימה מקושרת
רשימה מקושרת היא מבנה נתונים ליניארי המשמש לאחסון אוסף של נתונים. רשימה מקושרת מקצה זיכרון לאלמנטים שלה בנפרד בבלוק הזיכרון שלה, והמבנה הכללי מתקבל על ידי קישור אלמנטים אלה כקישורים בשרשרת. רשימה מקושרת אחת מורכבת מרצף של צמתים וכל צומת יש התייחסות הצומת הבא ברצף. רשימה מקושרת כפולה מכילה רצף של צמתים, שבו כל צומת מכיל הפניה לצומת הבא וכן לצומת הקודם.
- <->רשימה מקושרת
לכל רכיב ברשימה מקושרת יחיד יש שני שדות כפי שמוצג באיור 1. שדה הנתונים מכיל את הנתונים המאוחסנים בפועל והשדה הבא מכיל את ההתייחסות לאלמנט הבא בשרשרת. האלמנט הראשון של הרשימה המקושרת מאוחסן כראש הרשימה המקושרת.
איור 2 מציג רשימה מקושרת יחידה עם שלושה אלמנטים. כל רכיב מאחסן את הנתונים שלו ואת כל האלמנטים, למעט החנות האחרת, התייחסות למאפיין הבא. אלמנט אחרון מחזיקה ערך ריק בשדה הבא שלה. ניתן לגשת אלמנט כלשהו ברשימה על ידי לחיצה על הראש ועקוב אחר המצביע הבא, עד שתעמוד במרכיב הרצוי.
רשימת קישורים מקושרים
לכל רכיב ברשימה מקושרת כפולה יש שלושה שדות כפי שמוצג באיור 3. בדומה לרשימה המקושרת יחיד, שדה הנתונים מכיל את הנתונים המאוחסנים בפועל והשדה הבא מכיל את ההתייחסות לאלמנט הבא בשרשרת. בנוסף, השדה הקודם מכיל את ההתייחסות למרכיב הקודם בשרשרת. האלמנט הראשון של הרשימה המקושרת מאוחסן כראש הרשימה המקושרת.
איור 4 מתאר רשימה מקושרת עם שלושה אלמנטים. כל רכיבי הביניים מאחסנים הפניות לגורמים הראשונים והקודמים. אלמנט אחרון ברשימה מחזיק ערך null בשדה הבא שלו ואת האלמנט הראשון ברשימה מחזיקה ערך ריק בשדה הקודם שלה. רשימה מקושרת זו לזו ניתן לעבור קדימה על ידי ביצוע הפניות הבאות בכל אלמנט, וכן ניתן לחצות אחורה באמצעות הפניות קודמות בכל אלמנט.
מה ההבדל בין רשימה מקושרת לבין רשימה מקושרת?
כל רכיב ברשימה המקושרת יחיד מכיל הפניה אלמנט הבא ברשימה, כאשר כל רכיב ברשימה המקושרת כפליים מכיל התייחסויות אלמנט הבא וכן אלמנט הקודם ברשימה. רשימות מקושרות כפול דורשות יותר מקום עבור כל רכיב ברשימה ופעולות בסיסיות כגון הוספה ומחיקה מורכבת יותר שכן הם צריכים להתמודד עם שתי הפניות. אבל רשימות קישורים כפולות מאפשרות מניפולציה קלה יותר, שכן היא מאפשרת לחצות את הרשימה קדימה וכיוונים לאחור.