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

מחלקת MyNode: value (מספר שלם), howManyBig (מספר האיברים בשרשרת שאחרי הנוכחי שערכם גדול מ-value שלו), next. addNumber מכניסה איבר חדש במיקום נתון, תוך שמירה על חוק howManyBig בכל השרשרת (כולל האיבר החדש).

public class MyNode
{
    private int value;
    private int howManyBig;
    private MyNode next;

    public MyNode(int val)
    {
        this.value = val;
        this.howManyBig = 0;
        this.next = null;
    }
    // לכל תכונה במחלקה הוגדרו פעולות Get/Set
}

השרשרת לפני addNumber(list,3,5) — (value,howManyBig) לכל חוליה. p מצביע לחוליה השלישית (value=4,howManyBig=2) כדוגמה להסבר הכלל.

list → (5,2) → (2,3) → (4,2) → (8,0) → (7,0) → (1,0) → null

השרשרת אחרי addNumber(list,3,5) — האיבר החדש (3,1) הוכנס במיקום 5; howManyBig של (2,·) עודכן מ-3 ל-4 (כי 3>2 והאיבר החדש בא אחריו); שאר החוליות ללא שינוי.

list → (5,2) → (2,4) → (4,2) → (8,0) → (3,1) → (7,0) → (1,0) → null
סעיף א

כתבו פעולה חיצונית המקבלת הפנייה לחוליה הראשונה של שרשרת החוליות מסוג MyNode, מספר שלם val, ומספר שלם וחיובי position. כותרת הפעולה: public static MyNode addNumber(MyNode list, int val, int position) הפעולה צריכה להכניס איבר חדש לשרשרת במיקום position (המיקום של האיבר הראשון בשרשרת הוא 1). ערך התכונה value של האיבר החדש יהיה שווה לפרמטר val. השרשרת שתתקבל צריכה לשמור על החוקים של השרשרת המקורית לגבי התכונה howManyBig.

public static MyNode AddNumber(MyNode list, int val, int position)

סעיף ב

מהי סיבוכיות הפעולה? הסבירו את תשובתכם.

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

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

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

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