אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 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 System.Collections.Generic.LinkedList<Ring> data = new System.Collections.Generic.LinkedList<Ring>();
    public Pole() { }
    public void Add(Ring r) { data.AddFirst(r); }           // O(1) — מכניסה טבעת r לראש המוט
    public Ring Remove() { var r = data.First.Value; data.RemoveFirst(); return r; } // O(1)
    public bool IsEmpty() { return data.Count == 0; }        // O(1)
    public void Sort() {
        // TODO — סעיף א
    }
}
סעיף א

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

public void Sort()

סעיף ב

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

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

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

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

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