רשימה (מבנה נתונים)
ערך מחפש מקורות
| ||
ערך מחפש מקורות | |
רשימה (באנגלית: List או Sequence) היא מבנה נתונים מופשט שתוכנו בעל סדר חלקי ועשוי להכיל חזרות (כלומר עשויים להימצא בו מספר איברים שקולים). מימוש של רשימה הוא למעשה ייצוג ממוחשב של סדרה מתמטית סופית.
על פי רוב, מימוש רשימה במחשב ייעשה על ידי שימוש במערך או ברשימה מקושרת. שפות תכנות רבות כוללות מימוש כלשהו של רשימה, ושפות תכנות פונקציונליות או לוגיות (כמו Haskell או פרולוג) תומכות על פי רוב ברשימה כטיפוס בסיסי בשפה.
רשימה היא מבנה נתונים "חלש", כלומר ניתן להתייחס למבני נתונים אחרים כאל רשימה לה נוספו הגבלות:
- קבוצה היא רשימה שמתעלמים בה מהסדר, ושלא מאפשרת חזרות (ייצוג של קבוצה מתמטית).
- מחסנית היא רשימה בה האיברים מסודרים לפי מועד הוספתם, וניתן לגשת רק לאיבר האחרון שנוסף אליה (LIFO).
- תור הוא רשימה בה האיברים מסודרים לפי מועד הוספתם, וניתן לגשת רק לפריט הראשון שנוסף אליה (FIFO).
- רשימה שבין איבריה לא מוגדר סדר היא הכללה של קבוצה ונקראת מולטי קבוצה או "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 | |
הסתברותיים | מסנן בלום |
אלגוריתמי מיון | ||
---|---|---|
רקע תאורטי | תורת הסיבוכיות • סימון אסימפטוטי • סדר מלא • רשימה • אלגוריתם תוך-מקומי • מיון יציב | |
אלגוריתמי מיון | אקראי • בועות • בחירה • בסיס • הכנסה • מהיר • מיזוג • מנייה • מסרק • סלים • ערימה • רשת מיון • שייקר • של | |
שונות | מיון טופולוגי • בעיית סידור הפנקייקים של גודמן |