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

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

נתונה המחלקה CharList שלפניכם המייצגת רשימת תווים:

public class CharList
{
    private Node<char> head;
    public CharList() {
        this.head = null;
    }
    public CharList(Node<char> chain) {
        this.head = chain;
    }
}

במחלקה CharList הוגדרה פעולה המקבלת הפניה לחוליה כלשהי chain ותו letter. הפעולה תחזיר את הפנייה לחוליה הראשונה הנמצאת אחרי chain ומכילה את התו letter. אם התו אינו מופיע ברשימה אחרי ה-chain, הפעולה תחזיר null. הפעולה מוכנה ואין צורך לממש אותה! כותרת הפעולה:

public Node<char> FirstAfterChain(Node<char> chain, char letter)

⚠️ בעמוד המקורי סעיפי השאלה מסומנים א', ב', ד' (מדלגים על ג') — נשמר verbatim, אינו טעות תמלול.

סעיף א

כתבו פעולה המקבלת תו letter. הפעולה תחזיר את הפנייה לחוליה האחרונה המכילה את התו letter. אם התו לא מופיע ברשימה, הפעולה תחזיר null. כותרת הפעולה:

public Node<char> Last (char letter)

חובה להשתמש בפעולה FirstAfterChain.

סעיף ב

כתבו פעולה המקבלת תו letter המופיע לפחות פעמיים במקומות כלשהם ברשימה, אך לא בתחילתה ולא בסופה. הפעולה תחליף בין תת-השרשרת הנמצאת לפי המופע הראשון של letter לבין תת-השרשרת הנמצאת אחרי המופע האחרון של התו letter. לדוגמה, עבור הרשימה שלפניכם והתו %: k ➔ a ➔ % ➔ b ➔ b ➔ % ➔ b ➔ % ➔ e ➔ r ➔ r אחרי זימון הפעולה הרשימה תיראה כך: e ➔ r ➔ r ➔ % ➔ b ➔ b ➔ % ➔ b ➔ % ➔ k ➔ a כותרת הפעולה:

public void Swap(char letter)

חובה להשתמש בפעולות FirstAfterChain ו-Last.

סעיף ג

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

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

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

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

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