אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2024 · קיץ מועד ב · שאלה 5כל שאלות המבחן ←
מבנים לינאריים›רשימות מקושרות

נתונה הפעולה What הבאה:

public static int What(Node<int> ch){
        int c = 0;
        while(ch != null)
        {
            c++;
            ch = ch.GetNext();
        }
        return c;
    }

נתונה הפעולה Why המשתמשת בפעולה What:

public static bool Why(Node<int> ch1, Node<int> ch2) {
        int len1 = What(ch1);
        int len2 = What(ch2);
        for(int i = 0; i < len1-len2; i++)
        {
            ch1 = ch1.GetNext();
        }
        while(ch1!=null)
        {
            if(ch1.GetValue() != ch2.GetValue())
                return false;
            ch1 = ch1.GetNext();
            ch2 = ch2.GetNext();
        }
        return true;
    }

שתי שרשרות החוליות ch1 ו-ch2:

  • ch1: 10 → 7 → 14 → 5 → 7 → 2 → 4
  • ch2: 5 → 7 → 1 → 4
סעיף א

מה מבצעת הפעולה?

סעיף ב

מה תחזיר הפעולה Why(ch1, ch2) עבור שתי שרשרות החוליות ch1 ו-ch2 שלמעלה? יש להראות מעקב אחרי ביצוע הפעולה Why. אין צורך במעקב אחרי What.

סעיף ג

תנו דוגמה של שרשרת ch3 באורך ארבע חוליות, באופן שבו זימון הפעולה Why(ch1, ch3) יחזיר ערך שונה מזה שהוחזר בסעיף ב'.

סעיף ד

תנו דוגמה של שרשרת ch4 באורך ארבע חוליות, באופן שבו זימון הפעולה Why(ch4, ch1) יחזיר ערך true. אם אי אפשר ליצור שרשרת כזאת, הסבירו למה.

סעיף ה

מה מבצעות הפעולות Why(ch1,ch2) ו- What(ch) באופן כללי?

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי