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

רשימת מספרים שלמים וחיוביים נקראת "סופר עולה" אם כל איבר גדול מסכום כל האיברים שלפניו. דוגמת השאלון: 1→3→6→13→27→300→600 (כל איבר אכן גדול מסכום כל קודמיו). ניתן להוסיף לרשימה כזו את 60, 90, 1200 ולשמר את התכונה; אי אפשר להוסיף את 15, 40, 700.

שרשרת החוליות לדוגמה, המייצגת רשימה "סופר עולה" (מראש השרשרת): כל איבר גדול מסכום כל הקודמים לו (3>1, 6>1+3, 13>1+3+6, 27>1+3+6+13=23, 300>1+3+6+13+27=50, 600>1+3+6+13+27+300=350). אומת גם מול תמונת העמוד.

1 → 3 → 6 → 13 → 27 → 300 → 600 → null
סעיף א

כתבו פעולה חיצונית בשם isSuper המקבלת הפניה לחוליה ראשונה של שרשרת חוליות ובודקת אם היא מייצגת רשימה "סופר עולה". אם כן — הפעולה תחזיר true, ואם לא — הפעולה תחזיר false. כותרת הפעולה: public static boolean isSuper(Node<Integer> n)

סעיף ב

כתבו פעולה המקבלת הפניה לחוליה הראשונה של שרשרת חוליות שהיא רשימה "סופר עולה", ומספר שלם וחיובי num. הפעולה תבדוק האם אפשר להוסיף את המספר num לשרשרת כך שרשימה תישאר "סופר עולה". אם כן — הפעולה תכניס את המספר למיקומו ותחזיר true. אם לא — הפעולה תחזיר false ולא תבצע שום שינוי. אפשר להניח שמספר num גדול מהאיבר הראשון בשרשרת. לדוגמה: אפשר להוסיף לרשימה כל אחד מהמספרים 60, 90, 1200 שבאיור. לעומת זאת, כל אחד מהמספרים 15, 40, 700, אי אפשר להוסיף לשרשרת שבאיור והיא עדיין תישאר "סופר עולה". כותרת הפעולה: public static boolean addToSuper(Node<Integer> n, int num)

סעיף ג

מהי סיבוכיות הפעולות isSuper ו-addToSuper מהסעיפים א' ו-ב'? הסבירו את תשובתכם.

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

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

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

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