רשימה (מבנה נתונים)
רשימה (באנגלית: List או Sequence) היא מבנה נתונים מופשט שתוכנו בעל סדר חלקי ועשוי להכיל חזרות (כלומר עשויים להימצא בו מספר איברים שקולים). מימוש של רשימה הוא למעשה ייצוג ממוחשב של סדרה מתמטית סופית.
על פי רוב, מימוש רשימה במחשב ייעשה על ידי שימוש במערך או ברשימה מקושרת. שפות תכנות רבות כוללות מימוש כלשהו של רשימה, ושפות תכנות פונקציונליות או לוגיות (כמו Haskell או פרולוג) תומכות על פי רוב ברשימה כטיפוס בסיסי בשפה.
רשימה היא מבנה נתונים 'חלש', כלומר ניתן להתייחס למבני נתונים אחרים כאל רשימה לה נוספו הגבלות:
- קבוצה היא רשימה שמתעלמים בה מהסדר, ושלא מאפשרת חזרות (ייצוג של קבוצה מתמטית).
- מחסנית היא רשימה בה האיברים מסודרים לפי מועד הוספתם, וניתן לגשת רק לאיבר האחרון שנוסף אליה (LIFO).
- תור הוא רשימה בה האיברים מסודרים לפי מועד הוספתם, וניתן לגשת רק לפריט הראשון שנוסף אליה (FIFO).
- רשימה שבין איבריה לא מוגדר סדר היא הכללה של קבוצה ונקראת רב-קבוצה ("Multiset") או "Bag" (שק).
הגדרה מופשטת
רשימה מופשטת L עם איברים מסוג E כל שהוא (רשימה מונומורפית, מוגדרת בעזרת הפונקציות הבאות:
- nil: () → L
- cons: E × L → L
- first: L → E
- rest: L → L
והאקסיומות:
- first (cons (e, l)) = e
- rest (cons (e, l)) = l
לכל איבר e ברשימה l. יוצא מכך ש:
- cons (e, l) ≠ l
- cons (e, l) ≠ e
- cons (e1, l1) = cons (e2, l2) if e1 = e2 and l1 = l2
שימו לב ש-first (nil ())
ו-rest (nil ())
אינם מוגדרים.
האקסימות הללו שקולות לאלו של מבנה הנתונים המופשט של המחסנית.
בתורת הטיפוסים, ההגדרה לעיל מוגדרת בפשטות כהגדרה אינדוקטיבית המוגדרת במונחי הבנאים: nil ו-cons. במונחים אלגבריים, ניתן לייצג זאת כהעתקה 1 + E × L → L. ניתן ליצור את first ו-rest בעזרת תיאום דגמים על בנאי ה-cons, וטיפול נפרד במקרה של nil.
לקריאה נוספת
מבני נתונים | ||
---|---|---|
מבנים מופשטים | רשימה • מחסנית • קבוצה • מולטי קבוצה • תור • דו-תור • תור עדיפויות • מילון • מחרוזת • איחוד קבוצות זרות | |
מימושים ליניאריים | מערך • מערך משונן • טבלת גיבוב • רשימה מקושרת • רשימת דילוגים • חוצץ | |
גרפים ועצים | ערימה (בינארית • בינומית • פיבונאצ'י) • עץ חיפוש (עץ אדום שחור • עץ 2-3 • עץ 2-3-4) • עץ סיפות • עץ B • עץ +B • עץ AVL • עץ Splay • עץ BSP • עץ kd • עץ R • Trie • X-fast trie • טריי y מהיר• עץ WAVL | |
הסתברותיים | מסנן בלום |
קישורים חיצוניים
32668794רשימה (מבנה נתונים)