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

נתונה השרשרת הבאה (ch1, מהראש לסוף):

10, 12, 5, 3, 6, 1, 4

נתונות שתי הפעולות הרקורסיביות הבאות:

public static int zero(Node<Integer> ch){
    if(ch == null) return 0;
    return 1 + zero(ch.getNext());
}
public static Node<Integer> one(Node<Integer> ch, int n){
    if(ch == null) return null;
    if(n == 1) return ch;
    return one(ch.getNext(), n-1);
}
סעיף א

מה יהיה הפלט של הפקודה הבאה?

System.out.println(zero(ch1));

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

סעיף ב

מה יהיה הפלט של הפקודה הבאה?

System.out.println(one(ch1, 3));

מה מבצעת הפעולה one עבור ערך n שלם? יש להתייחס לאפשרויות שונות.

סעיף ג

נתונה הפעולה הרקורסיבית two הבאה:

public static void two(Node<Integer> ch, int n, int m){
    if(n < m)
    {
        Node<Integer> p1 = one(ch, n);
        Node<Integer> p2 = one(ch, m);
        int temp = p1.getValue();
        p1.setValue(p2.getValue());
        p2.setValue(temp);
        two(ch, n+1, m-1);
    }
}

עקבו אחרי זימון הפעולה two(ch1, 2, 6) ורשמו איך תיראה השרשרת אחרי ביצוע הפעולה? יש להראות מעקב אחרי ביצוע הפעולה.

סעיף ד

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

סעיף ה

נתונה השרשרת הבאה (ch2, מהראש לסוף): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

איך תיראה השרשרת לאחר ביצוע קטע הקוד הבא:

int s = zero(ch2);
for(int i = 1; i <= s/2; i++){
    two(ch2, i, s - i + 1);
}
שאלות ותגובות על השאלה

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

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

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