רשימה מקושרת היא מבנה נתונים בסיסי יחסית אחרי מערך. נושא זה יחסית אינו מורכב וכדאי להתחיל בו אם הנושא של מבני נתונים חדש לכם. בפוסט זה נעבור על הנושא וננסה להסביר אותו ככל הניתן.
לרוב, אנחנו לא נבחר ברשימה מקושרת כפתרון יחיד אלא משולב, בעיקר בגלל החסרונות שלה ונראה זאת בהמשך. נושא זה נסקר בשלמותו בעיקר במדעי המחשב ובשאלות של ראיונות עבודה.
היתרון של רשימה מקושרת על מערך סטנדרטי הוא שהיא לא מוגבלת במקום וקל מאוד להוסיף או לגרוע ממנה איבר אם הוא בתחילת או בסוף הרשימה. החיסרון הוא בכך שהאיברים שלה אינם בעלי אינדקס ולכן לא ניתן לפנות אליהם ישירות אלא יש להתחיל תמיד מתחילת הרשימה ולהמשיך משם עד לסופה.
רשימה מתחילה תמיד ב-Head, בלעדיו לא ניתן לגשת אל הרשימה כיון שהיא בנויה כך שהכתובת של כל איבר (Node) ברשימה נמצאת באיבר שלפניו ואין מקום כלשהו שכל הכתובות רשומות בו. בניגוד למערך - שם האיברים נמצאים בזיכרון בזה אחר זה ולכן אין בעיה ליצור אינדקס ולדלג ביניהם, ברשימה - אין אפשרות לדלג מהאיבר הראשון לשלישי למשל, אלא יש צורך לעבור בשני וכן הלאה.
נהוג גם לסמן את האיבר האחרון ברשימה כ-Tail, למרות שזה לא הכרחי.
Search
Insert
Remove
רשימות דו-כיווניות ומעגליות
המחשה יפה לדרך בה רשימה מקושרת עובדת - ניתן למצוא בלינק הבא: https://visualgo.net/en/list
במידה והנושא עדיין לא ברור, אני ממליץ להיעזר בסרטונים הבאים:
אין תגובות:
הוסף רשומת תגובה