דילוג לתוכן הראשי

אג 10.2.2020 חזרה מבני-נתונים: תור

בכיתה
1. GetMax
    כתבו פעולה המקבלת תור-שלמים.
    הפעולה מחזירה את הערך המקסימלי הקיים בה.
2. FilterMax
    כתבו פעולה המקבלת תור-שלמים.
    הפעולה מחזירה רשימה חדשה ללא הערך המקסימלי שהיה קיים ברשימה שהתקבלה.
    הערה: היעזרו בפעולה GetMax שכתבתם בסעיף הקודם.
3. MergeQueues
    מתוך עמ' 153, תרגיל 8: מיזוג תורים בקופות ***
    הגדירו פעולה חיצונית למיזוג של שני תורים.
    הפעולה תקבל כפרמטר שני תורים q1 ו- q2.
    כל אחד מהתורים מכיל מספרים שלמים ממויינים בסדר עולה. 
    הפעולה תמזג את תור q2 לתוך התור q1.
    לדוגמה, אם התקבלו התורים הבאים:
q1: 10 <-- 20 <-- 30.
q2:   5 <-- 15 <-- 25.
    התור q1 יראה כך בסיום הפעולה:
q1:   5 <-- 10 <-- 15 <-- 20 <-- 25 <-- 30
    רגע חושבים: האם ניתן להגדיר את הפעולה כחיצונית גנרית לכל טיפוס של נתונים בתור?
4. Print (תור של תורים)
    מתוך עמ' 154, תרגיל 12: תור של תורים - מעקב רקורסיבי ופיתוח ****
    א. נתונה הפעולה הבאה:
 public static int Print(Queue<Queue<int>> q, Stack<int> s)
 {
        if (q.IsEmpty())
            return 0;
        Queue<int> q2 = q.Remove();
        s.Push(q2.Remove());
        if (!q2.IsEmpty())
            q.Insert(q2);
        return Print(q, s) + 1;
  }
    i.  תנו דוגמה לתור q, המתאים להיות פרמטר לפעולה Print ומכיל לפחות 3 תורים,
        ובסך-הכל לפחות 7 איברים בכל התורים יחד. (יש לשרטט את התור).
    ii. עקבו אחר הביצוע של הפעולה Print על התור q שרשמתם בסעיף א' ועל
        מחסנית ריקה, ורשמו את המעקב.
    המשך התרגיל בספר (ראו עמ' 154-155).

לבית
1. השלימו בבית התרגילים שניתנו בכיתה (גם מי שהיו בבגרות ביום השיעור).
2. מבדק על שיעורי הבית יהיה ביום ו' הקרוב.

בשיעור הבא
1. מבדק ש.ב.
2. חזרה על עץ-בינארי.