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

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

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

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

public Node<Character> firstAfterChain(Node<Character> chain, char letter)

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

(א)כתבו פעולה המקבלת תו letter. הפעולה תחזיר את הפנייה לחוליה האחרונה המכילה את התו letter. אם התו לא מופיע ברשימה, הפעולה תחזיר null. כותרת הפעולה:
```java
public Node<Character> last (char letter)
```
חובה להשתמש בפעולה firstAfterChain.
(ב)כתבו פעולה המקבלת תו letter המופיע לפחות פעמיים במקומות כלשהם ברשימה, אך לא בתחילתה ולא בסופה.
הפעולה תחליף בין תת-השרשרת הנמצאת לפי המופע הראשון של letter לבין תת-השרשרת הנמצאת אחרי המופע האחרון של התו letter.
לדוגמה, עבור הרשימה שלפניכם והתו %:
`k ➔ a ➔ % ➔ b ➔ b ➔ % ➔ b ➔ % ➔ e ➔ r ➔ r`
אחרי זימון הפעולה הרשימה תיראה כך:
`e ➔ r ➔ r ➔ % ➔ b ➔ b ➔ % ➔ b ➔ % ➔ k ➔ a`
כותרת הפעולה:
```java
public void swap(char letter)
```
חובה להשתמש בפעולות firstAfterChain ו-last.
(ג)מהי סיבוכיות זמן הריצה של הפעולה swap? הסבירו את תשובתכם.

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

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

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

רוצים לתרגל אלפי שאלות נוספות?

המשיכו לתרגול מלא עם משוב אישי ←

מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות

המשיכו לתרגול מלא ←