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

לפניכם שתי הפעולות הרקורסיביות What ו-Why. הפעולה What מקבלת הפניה לאחת מהחוליות בשרשרת חוליות של מספרים שלמים, והפעולה Why מקבלת הפניה לחוליה ראשונה בשרשרת החוליות.

public static Node<int> What (Node<int> p1)
{
    if(p1.GetNext() ==null)
        return p1;
    Node<int> p2 = What(p1.GetNext());
    if(p1.GetValue() < p2.GetValue())
        return p1;
    return p2;
}
public static void Why(Node<int> chain)
{
    if(chain.GetNext()!=null)
    {
        Node<int>p = What(chain);
        int temp=p.GetValue();
        p.SetValue(chain.GetValue());
        chain.SetValue(temp);
        Why(chain.GetNext());
    }
}

נתונה שרשרת חוליות הבאה (p1 מצביע על החוליה השלישית):

chain → 3, 4, 10*, 5, 8, 6 (* p1 מצביע לחוליה עם הערך 10)

סעיף א

מה יחזיר זימון הפעולה What(p1)? יש להראות מעקב אחר ביצוע הפעולה.

סעיף ב

מה מבצעת הפעולה What באופן כללי?

סעיף ג

עקבו אחרי זימון הפעולה Why(chain) ורשמו איך תיראה השרשרת אחרי זימון. יש להראות מעקב אחרי ביצוע הפעולה Why, אין צורך במעקב אחרי הזימונים של What.

סעיף ד

מה מבצע הפעולה Why באופן כללי?

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

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

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

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