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

סעיף א

כתבו פעולה המקבלת מחסנית של מספרים שלמים ומחזירה את סכום האיברים הנמצאים במחסנית.

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

public static int GetSumOfStack(Stack<int> st)
סעיף ב

כתבו פעולה המקבלת מחסנית של מספרים שלמים ומחזירה את הערך של המספר האחרון שנמצא במחסנית (את הערך הנמצא בתחתית המחסנית).

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

public static int GetStackLastValue(Stack<int> st)
סעיף ג

שרשרת מחסניות היא שרשרת חוליות מסוג Node<Stack<int>>. כלומר, הערך (value) של כל חוליה הוא הפניה למחסנית של מספרים שלמים.

כתבו פעולה המקבלת הפניה לחוליה הראשונה של שרשרת מחסניות. הפעולה תחזיר תור של מספרים שלמים באופן הזה: עבור כל מחסנית הנמצאת בשרשרת מחסניות שהאורך שלה זוגי, יוכנס לתור ערך השווה לסכום האיברים במחסנית, ואילו עבור כל מחסנית שהאורך שלה הוא אי-זוגי הפעולה תכניס לתור את הערך הנמצא בתחתית המחסנית.

לדוגמה, עבור שרשרת המחסניות שלפניכם (chain, ארבע חוליות; לכל חוליה מחסנית מהראש למטה):

  • חוליה 1: 5, 1, 3, 4, 7, 2 (אורך 6, זוגי)
  • חוליה 2: 5, 1, 3 (אורך 3, אי-זוגי)
  • חוליה 3: 3, 1, 5, 6 (אורך 4, זוגי)
  • חוליה 4: 2, 1, 4, 4, 7 (אורך 5, אי-זוגי)

הפעולה תחזיר תור חדש (מהראש לזנב): 22, 3, 15, 7

  • עבור החוליה הראשונה יתקבל סכום של איברים כי אורך המחסנית זוגי. הסכום הוא 5+1+3+4+7+2 = 22
  • עבור החוליה השנייה יתקבל מספר בתחתית המחסנית (3) כי אורך המחסנית אי-זוגי.
  • עבור החוליה השלישית יתקבל סכום של איברים כי אורך המחסנית זוגי. הסכום הוא 3+1+5+6 = 15
  • עבור החוליה הרביעית יתקבל מספר בתחתית המחסנית (7) כי אורך המחסנית אי-זוגי.

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

public static Queue<int> DoIt(Node<Stack<int>> chain)
סעיף ד

מהי סיבוכיות זמן הריצה של הפעולה שכתבתם בסעיף ג'? הסבירו את תשובתכם.

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

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

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

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