תכנות מתקדם ב-Java/מבני נתונים מתקדמים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות)
אין תקציר עריכה
Johnny Zoo (שיחה | תרומות)
שורה 66:
 
===תור ומחסנית===
תור ומחסנית הם מבני נתונים פשוטים מאוד, הדומים זה לזה דמיון רב. כשמם כן הם:
* '''תור''' (Queue) מאפשר הצצה לראש התור, הוצאת איבר מראש התור, הכנסת איבר לסוף התור. התור עובד בשיטה של "בא ראשון - יוצא ראשון" (First in first out - FIFO).
* '''מחסנית''' (Stack) מאפשרת הצצה לראש המחסנית, הוצאת איבר מתחילת המחסנית, והכנסת איבר לתחילת המחסנית. המחסנית עובדת בשיטה של "בא ראשון - יוצא אחרון" (First in last out - FILO).
בנוסף, מתאפשרת בדיקה האם התור/המחסנית ריקים. באופן מפתיע, למרות מספר הפעולות המצומצם שהם מאפשרים, תורים ומחסניות נמצאים בשימוש רחב, למשל:
* כאשר שולחים מספר עבודות להדפסה, נוצר תור של עבודות הממתינות להדפסה.
* כאשר פונקציה קוראת לפונקציה אחרת, המידע על מצב הפונקציה (והפונקציות שקראו לה) נשמר במחסנית מיוחדת.
 
המימוש של תורים ומחסניות אינו קבוע. התנאי הוא שכל מימוש חייב ליישם את הממשק שפורט למעלה (הכנסת איבר וכדומה). מימוש נפוץ הוא בעזרת רשימה מקושרת.
 
 
===עצים בינאריים===