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

נתונה המחלקה SpecNode:

public class SpecNode {
    private int value;
    private int numOfSmallers;
    private SpecNode next;

    public SpecNode (int val) {
        this.value = val;
        this.numOfSmallers = 0;
        this.next = null;
    }
}

לכל תכונה במחלקה הוגדרו פעולות Get/Set. בשרשרת חוליות מסוג SpecNode:

  • value – מספר שלם.
  • numOfSmallers – מספר החוליות המופיעות אחרי החוליה הנוכחית בשרשרת שערך ה-value שלהן קטן מערך ה-value של החוליה הנוכחית.
  • next – מצביע לחוליה הבאה.

⚠️ דוגמה מצורפת ל-PDF כתרשים שרשרת חוליות (ערכי value/numOfSmallers וחץ מצביע P) שלא ניתן לשחזר במדויק משכבת הטקסט. לפי הפרוזה הנלווית: החוליה הראשונה value=7, ואחריה ארבע חוליות שערכן קטן מ-7 (numOfSmallers=4). מצביע P מצביע על חוליה עם value=4, ו-numOfSmallers=2 (שתי חוליות אחריה עם ערכים קטנים מ-4, כלומר 1 ו-2). יש לשחזר את התרשים המדויק מהעמוד המקורי (עמ' 7 C# / עמ' 17 Java) אם נדרשת דיוק ויזואלי מלא.

סעיף א

כתבו פעולה חיצונית המכניסה חוליה חדשה לשרשרת במיקום pos ועם ערך val. הפעולה מקבלת הפניה לחוליה הראשונה של שרשרת חוליות מסוג SpecNode, מספר שלם val ומספר שלם חיובי pos (המיקום הראשון בשרשרת הוא 1). אפשר להניח כי מיקום pos חוקי (אינו עולה על אורך רשימה+1). לאחר ההוספה, יש לעדכן את כל ערכי numOfSmallers בהתאם. כותרת הפעולה:

public static SpecNode addNum(SpecNode list, int val, int pos)

לדוגמה: אחרי זימון הפעולה addNum(list, 3, 5) השרשרת שתתקבל תהיה (תרשים בעמוד המקורי — ⚠️ ראו הערה למעלה).

סעיף ב

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

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

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

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

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