שאלה מתוך המבחן הרשמי · מבחן 2024 · קיץ מועד א · שאלה 6
נתונות שתי פעולות רקורסיביות הפועלות על שרשרת חוליות (linked list) מטיפוס Node Integer : הפעולה what מקבלת שרשרת lst ומספר שלם x; הפעולה guess מקבלת שרשרת lst בלבד וקוראת בתוכה ל-what. בכל סעיפי השאלה יש לעקוב אחר ריצת הפעולה הנתונה, ולענות על שלוש שאלות: מה השרשרת המתקבלת / מה מדפיסה הפעולה, מה עושה הפעולה (בלשון כללית), ומה סיבוכיות הזמן שלה.
public static Node<int> What (Node<int> lst, int x)
{
if (lst == null)
return null;
Node<int> temp = What (lst.GetNext(),x);
if (lst.GetValue() == x)
return temp;
lst.SetNext (temp);
return lst;
}
public static void Guess (Node<int> lst)
{
if (lst != null) {
Node<int> temp = What (lst.GetNext(), lst.GetValue());
lst.SetNext (temp);
Guess (lst.GetNext());
}
}
שרשרת החוליות lst הנתונה, מטיפוס Node<Integer>, המשמשת בשני סעיפי השאלה.
lst -> [1] -> [3] -> [5] -> [3] -> [1] -> [9] -> [4] -> null
סעיף א
עקבו אחר הפעולה what (lst, 1), והציגו את השרשרת שהפעולה מחזירה.
סעיף ב
מה עושה הפעולה what? הסבירו את תשובתכם.
סעיף ג
מהי סיבוכיות הפעולה what? נמקו את תשובתכם.
סעיף ד
עקבו אחר הפעולה guess (lst), והציגו את השרשרת lst בסיום הפעולה. בסעיף זה אין צורך לעקוב אחר הפעולה what.
סעיף ה
מה עושה הפעולה guess? הסבירו את תשובתכם.
סעיף ו
מהי סיבוכיות הפעולה guess? נמקו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.