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

נתונה מחלקה המתארת אבן דומינו (Domino):

public class Domino
{
 private int left; // ערך מספרי צד שמאלי בין 0 ל-6 (כולל)
 private int right; // ערך מספרי צד ימני בין 0 ל-6 (כולל)

 public Domino(int left, int right)
 {
  this.left = left;
  this.right = right;
 }
}

במחלקה הוגדרו פעולות set/get.

נתונה המחלקה Deck המתארת רשימת אבני דומינו:

public class Deck
{
  private Node<Domino> head;
  public Deck()
  {
    this.head = null;
  }
}

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

לדוגמה: הרשימה הבאה מוגדרת "מסודרת היטב" — head→[אבן]→[אבן]→[אבן]→[אבן]→null (האבנים מצוירות בנקודות, כמו באבני דומינו).

סעיף א

rotate()

כתבו במחלקה Domino את הפעולה rotate(). הפעולה מסובבת את האבן הנוכחית כלומר: מחליפים בין הערכים left ו-right.

סעיף ב

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

סעיף ג

כתבו במחלקה Deck פעולה המקבלת אבן דומינו ובודקת אם אפשר להוסיף אותה לרשימה כך שהיא תישאר "מסודרת היטב". אם כן – הפעולה תוסיף את האבן לרשימה ותחזיר ערך true, ולא – תחזיר ערך false. לדוגמה: אפשר להוסיף לרשימה שבדוגמה בסעיף א' את האבנים הבאות: (0,4), (1,1), (4,6). אי אפשר להוסיף את האבנים: (3,2), (5,6), (2,2).

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

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

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

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