המחלקה NumCount מייצגת מספר וכמות מופעים שלו, ולה שתי תכונות: num (ערך מספרי) ו-count (מספר המופעים של הערך, שלם גדול או שווה ל-0). למחלקה קיימות get/set לכל אחת מהתכונות, ופעולת בנאי המקבלת ערכים עבור שתי התכונות. המחלקה OrderedList מייצגת שרשרת ממוינת אחת, ולה תכונה אחת: lst - מצביע על ראש של שרשרת חוליות מטיפוס NumCount, שרשרת ממוינת לפי סדר עולה של ערך התכונה num בכל חוליה (ערך התכונה num שונה בכל חוליה).
המחלקה NumCount מייצגת מספר וכמות מופעים שלו, ולה שתי תכונות: num (ערך מספרי) ו-count (מספר המופעים של הערך, שלם גדול או שווה ל-0). למחלקה קיימות get/set לכל אחת מהתכונות, ופעולת בנאי המקבלת ערכים עבור שתי התכונות. המחלקה OrderedList מייצגת שרשרת ממוינת אחת, ולה תכונה אחת: lst - מצביע על ראש של שרשרת חוליות מטיפוס NumCount, שרשרת ממוינת לפי סדר עולה של ערך התכונה num בכל חוליה (ערך התכונה num שונה בכל חוליה).
דוגמת שרשרת OrderedList ראשונית המשמשת את שני סעיפי א(1) ו-א(2) בשאלון: שלוש חוליות NumCount עם num=3 count=9, num=5 count=1, num=8 count=2.
lst -> [num:3, count:9] -> [num:5, count:1] -> [num:8, count:2] -> null
ממשו במחלקה OrderedList את הפעולה הפנימית שלפניכם, המוסיפה את הערך x לשרשרת באופן הבא: אם קיימת בשרשרת חוליה שהתכונה num שלה שווה ל-x, הפעולה תגדיל ב-1 את התכונה count של אותה חוליה (כמות המופעים). אם השרשרת ריקה, או שלא קיימת בה חוליה שהתכונה num שלה שווה ל-x, הפעולה תכניס חוליה חדשה, שבה התכונה num תהיה שווה ל-x והתכונה count תהיה שווה ל-1, במיקום השומר את הסדר העולה של השרשרת.
public void insertNum (int x)
מהי סיבוכיות זמן הריצה של הפעולה שכתבתם בסעיף א(1)? נמקו את תשובתכם.
'ערך המופיע ה-n' הוא הערך שמופיע במקום ה-n לפי הסדר המתקבל מהתחלת השרשרת (בשקלול כמות המופעים - count - של כל ערך). לדוגמה: עבור השרשרת שלפניכם ו-n=7, הפעולה תחזיר את הערך 8. ממשו במחלקה OrderedList את הפעולה הפנימית שלפניכם, המקבלת את המספר n, ומחזירה את ערך המופע ה-n בשרשרת. הניחו ש'ערך המופיע ה-n' קיים בשרשרת.
public int valueN (int n)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.