אני לא חושב שהבנת את הרעיון
מאחורי הskip list. מדובר ברשימה מקושרת (ממוינת!) שבעצם מכילה כמה וכמה רשימות מקביליות, כשכל רשימה קטנה בסדר גודל מקודמה. איך הן מתקשרות אחת עם השניה? בעזרת מצביעים ברשומות. הרשומות זהות, רק בכל רשימה מקבילית, אתה עובר על רשומות אחרות. למשל: ברשימה המלאה יש לך A, B,C,D,E,F,G,H,I,K,J ברמה השניה יש לך A, C, E, G, I, J ברמה השלישית יש לך A, E, I אתה מחפש את K, אז אתה מתחיל "אריה במדבר" בתוך הרשימה הכי קצרה, עד שאתה מגיע (במקרה שלנו) לI. שם אתה עובר לרשימה היותר ארוכה, ומוצא את עצמך מדלג לJ (אופס, פיספסת את K). אז אתה עובר לרשימה הכי ארוכה, ומתחיל לחפש את K אחד אחד אחורה. בדיוק כמו אריה במדבר במערך, רק שזה לא מערך. עכשיו, אתה שואל מתי אתה פותח את הרשימה המקבילית הבאה, נכון? זהו בדיוק החלק האקראי. לכל מפתח שאתה מוסיף, אתה שואל את המחשב אם לשים אותו ברמה הכי גבוהה. מחשב יגיד לך כן? יופי, יגיד לך לא? אז תשאל אותו מה לגבי הרמה היותר נמוכה. בסוף - הוא יגיד לך כן, או שפשוט תוסיף אותו לרמה הכי נמוכה שיש.