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

נתונות שתי הפעולות what ו-where המקבלות הפנייה לחוליה הראשונה של שרשרת חוליות:

public static Node<Integer> what(Node<Integer> chain, int x){
    while(chain!=null && chain.getValue()% x == 0){
        chain = chain.getNext();
    }
    if(chain == null)
        return null;

    Node<Integer> p = chain;
    Node<Integer> p1 = p.getNext();
    while(p1 != null){
        if(p1.getValue()% x == 0)
        {
            p.setNext(p1.getNext());
            p1.setNext(null);
            p1 = p.getNext();
        }
        else
        {
            p = p1;
            p1 = p1.getNext();
        }
    }
    return chain;
}
public static void where(Node<Integer> chain){
    Node<Integer> p = chain;
    while(p != null) {
        p.setNext(what(p.getNext(),p.getValue()));
        p = p.getNext();
    }
}

נתונה שרשרת חוליות הבאה:

chain: 4, 20, 5, 7, 8, 4, 6, 18

סעיף א

עקבו אחרי זימון הפעולה what(chain, 4) ורשמו מה תחזיר הפעולה.

סעיף ב

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

סעיף ג

עקבו אחרי זימון הפעולה where(chain) ורשמו איך תיראה השרשרת אחרי ביצוע. אין צורך במעקב אחרי זימון הפעולה what.

סעיף ד

האם אפשר לשנות סדר חוליות בשרשרת chain כך ששרשרת לא תשתנה אחרי זימון הפעולה where? אם כן – רשמו את השרשרת אחרי שינוי, אם לא – הסבירו למה אי אפשר לבצע שינוי כזה.

סעיף ה

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

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

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

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

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