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

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

public static Node<Integer> what (Node<Integer> p1)
{
    if(p1.getNext() ==null)
        return p1;
    Node<Integer> p2 = what(p1.getNext());
    if(p1.getValue() < p2.getValue())
        return p1;
    return p2;
}
public static void why(Node<Integer> chain)
{
    if(chain.getNext()!=null)
    {
        Node<Integer>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 באופן כללי?

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

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

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

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