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

שרשרת חוליות מטיפוס שלם; "שרשרת ההפרשים" שלה היא שרשרת חדשה שבה כל איבר הוא ההפרש בערך מוחלט בין כל זוג איברים סמוכים במקור. דוגמה: 5,20,9,6,5,8,2 -> 15,11,3,1,3,6. הפעלה חוזרת עד לאיבר יחיד ("השורד"):...-> 4,8,2,2,3 -> 4,6,0,1 -> 2,6,1 -> 4,5 -> 1.

דוגמה: השרשרת 5→20→9→6→5→8→2 (7 חוליות); שרשרת ההפרשים שלה: |20-5|=15, |9-20|=11, |6-9|=3, |5-6|=1, |8-5|=3, |2-8|=6 — כלומר 15→11→3→1→3→6 (6 חוליות). לסעיף ב׳: הפעלה חוזרת עד שנותר איבר אחד ("השורד"): 5,20,9,6,5,8,2 → 15,11,3,1,3,6 → 4,8,2,2,3 → 4,6,0,1 → 2,6,1 → 4,5 → 1. הפעולה מחזירה 1.

5 → 20 → 9 → 6 → 5 → 8 → 2 → null
(הפרשים) 15 → 11 → 3 → 1 → 3 → 6 → null
(הפרשים) 4 → 8 → 2 → 2 → 3 → null
(הפרשים) 4 → 6 → 0 → 1 → null
(הפרשים) 2 → 6 → 1 → null
(הפרשים) 4 → 5 → null
(הפרשים) 1 → null   <- השורד
סעיף א

כתבו פעולה חיצונית בשם differenceList (Java) / DifferenceList (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. הפעולה תחזיר הפניה לחוליה הראשונה של "שרשרת ההפרשים".

public static Node<Integer> differenceList(Node<Integer> lst)

סעיף ב

כתבו פעולה חיצונית בשם theSurvives (Java) / TheSurvives (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. על הפעולה לחשב שוב ושוב את שרשרת ההפרשים שלה עד שמתקבלת רשימה עם איבר אחד — איבר זה הוא ה"שורד". על הפעולה להדפיס את כל השרשראות המתקבלות ולהחזיר את ערכו של האיבר ה"שורד". מומלץ להשתמש בפעולה שכתבתם בסעיף א'.

public static int theSurvives(Node<Integer> lst)

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

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

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

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