אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2016 · קיץ מועד א · שאלה 4כל שאלות המבחן ←
מבנים לינארייםמחסניות

לפניכם המחלקה Ring (טבעת) בעלת גודל ("S"/"M"/"L") וצבע, והמחלקה Pole (מוט) המספקת פעולות add (הכנסה לראש המוט, O(1)), remove (הוצאה מהראש, O(1)), isEmpty (O(1)) ו-sort (למימוש). לאחר sort(), הטבעות הגדולות צריכות להיות מונחות בתחתית המוט והקטנות מעליהן.

public class Ring {
    private String size;   // גודל הטבעת ("S"/"M"/"L")
    private int color;     // צבע הטבעת
    public Ring() { this.size = "L"; this.color = 0; }
    public Ring(String str, int c) { this.size = str; this.color = c; }
    public String getSize() { return this.size; }
    public int getColor() { return this.color; }
}

public class Pole {
    private java.util.LinkedList<Ring> data = new java.util.LinkedList<>();
    public Pole() { }
    public void add(Ring r) { data.addFirst(r); }          // O(1) — מכניסה טבעת r לראש המוט
    public Ring remove() { return data.removeFirst(); }     // O(1) — מוציאה ומחזירה את טבעת הראש
    public boolean isEmpty() { return data.isEmpty(); }      // O(1)
    public void sort() {
        // TODO — סעיף א
    }
}
סעיף א

ממש ב-Java את הפעולה sort() (ב-C#: Sort()) שבמחלקה Pole, המסדרת את הטבעות כך שהגדולות "מונחות" בתחתית המוט והקטנות מעליהן. בתשובתך השתמש רק בפעולות המחלקות Pole ו-Ring.

public void sort()

סעיף ב

מהי סיבוכיות זמן הריצה של הפעולה שמימשת בסעיף א? נמק את תשובתך.

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

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

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

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