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

סדרה יורדת היא הסדרה שכל איבר החל באיבר ה-3 שווה להפרש של 2 קודמיו בערך מוחלט. לדוגמה:

  • אם 2 האיברים של הסידרה הם 55 ו-34 אז סדרה יורדת תהיה: 55 34 21 13 8 5 3 2 1 1 0 1 1 ....
  • אם 2 האיברים של הסידרה הם 15 ו-40 אז סדרה יורדת תהיה: 15 40 25 10 15 5 10 5 5 0 …

תזכורת: לחישוב הפרש יש להשתמש בפונקציה של ערך מוחלט (Math.Abs).

סעיף א

כתבו פעולה המקבלת הפנייה לשרשרת חוליות של מספרים שלמים. הפעולה תבדוק אם ערכים של השרשרת הם סדרה יורדת. אם כן – הפעולה תחזיר ערך true, ולא – הפעולה תחזיר ערך false.

כותרת הפעולה:

public static bool IsDownList (Node<int> chain)
סעיף ב

כתבו פעולה המקבלת מספר שלם וחיובי num וזוג מספרים שלמים a ו-b. הפעולה תחזיר הפניה לחוליה הראשונה של שרשרת חוליות שאבריה הם num המספרים הראשונים של סדרה יורדת המתחילה במספרים a ו-b.

כותרת הפעולה:

public static Node<int> BuildDown (int num, int a, int b)

לדוגמה: עבור הזימון BuildDown(9, 55, 34) הפעולה תחזיר הפנייה לחוליה הראשונה של שרשרת החוליות הבאה:

chain → 55 → 34 → 21 → 13 → 8 → 5 → 3 → 2 → 1

(מאומת חזותית ב-200dpi. שימו לב: בגרסת ה-Java המקבילה של אותו שאלון (עמ' 3) התרשים המקביל מוצג שגוי כ-55,3,2,1,8,5,3,2,1 — כנראה פגם דפוס בגרסת Java בלבד; ראו fidelity_notes.)

סעיף ג

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

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

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

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

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