רשימות מיוחדות
1. רשימה דו-כיוונית (Doubly Linked List)
ברשימה זו, לכל חוליה יש שני קישורים: אחד לזו שאחריה ואחד לזו שלפניה.
● היתרון: ניתן לנוע ברשימה בשני הכיוונים (קדימה ואחורה) מבלי לחזור כל פעם לראש הרשימה.
● המימוש באמצעות BinNode<T>: ○ GetRight() / SetRight() = הקישור לחוליה הבאה (Next). ○ GetLeft() / SetLeft() = הקישור לחוליה הקודמת (Prev).
● מקרי קצה: בחוליה הראשונה ה-Left הוא null, ובחוליה האחרונה ה-Right הוא null.
● שמירה על רצף: בביצוע שינויים (הוספה או מחיקה), יש לעדכן ארבעה מצביעים (שניים בחוליה החדשה/הנמחקת ושניים בחוליות השכנות).
2. רשימה מעגלית (Circular List)
רשימה שבה החוליה האחרונה מצביעה חזרה על החוליה הראשונה.
● ברשימה חד-כיוונית מעגלית: last.GetNext() == head.
● ברשימה דו-כיוונית מעגלית: * ה-Right של האחרון מצביע לראשון. ○ ה-Left של הראשון מצביע לאחרון.
● היתרון: ניתן להגיע לכל איבר מכל נקודה ברשימה.
● דגש לסריקה: בלולאת while, התנאי pos != null יגרום ללולאה אינסופית! יש לשמור את נקודת ההתחלה ולעצור כשחוזרים אליה.