בשאלה זו אסור להשתמש במבנים נוספים כגון תור, מחסנית או מערך וגם אסור ליצור חוליות נוספות.
בשאלה זו אסור להשתמש במבנים נוספים כגון תור, מחסנית או מערך וגם אסור ליצור חוליות נוספות.
נתונה המחלקה 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. כותרת הפעולה:
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
כותרת הפעולה:
public void swap(char letter)
חובה להשתמש בפעולות firstAfterChain ו-last.
מהי סיבוכיות זמן הריצה של הפעולה swap? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.