מחלקת MyNode: value (מספר שלם), howManyBig (מספר האיברים בשרשרת שאחרי הנוכחי שערכם גדול מ-value שלו), next. addNumber מכניסה איבר חדש במיקום נתון, תוך שמירה על חוק howManyBig בכל השרשרת (כולל האיבר החדש).
מחלקת MyNode: value (מספר שלם), howManyBig (מספר האיברים בשרשרת שאחרי הנוכחי שערכם גדול מ-value שלו), next. addNumber מכניסה איבר חדש במיקום נתון, תוך שמירה על חוק howManyBig בכל השרשרת (כולל האיבר החדש).
public class MyNode
{
private int value;
private int howManyBig;
private MyNode next;
public MyNode(int val)
{
this.value = val;
this.howManyBig = 0;
this.next = null;
}
// לכל תכונה במחלקה הוגדרו פעולות get/set
}
השרשרת לפני addNumber(list,3,5) — (value,howManyBig) לכל חוליה. p מצביע לחוליה השלישית (value=4,howManyBig=2) כדוגמה להסבר הכלל.
list → (5,2) → (2,3) → (4,2) → (8,0) → (7,0) → (1,0) → null
השרשרת אחרי addNumber(list,3,5) — האיבר החדש (3,1) הוכנס במיקום 5; howManyBig של (2,·) עודכן מ-3 ל-4 (כי 3>2 והאיבר החדש בא אחריו); שאר החוליות ללא שינוי.
list → (5,2) → (2,4) → (4,2) → (8,0) → (3,1) → (7,0) → (1,0) → null
כתבו פעולה חיצונית המקבלת הפנייה לחוליה הראשונה של שרשרת החוליות מסוג MyNode, מספר שלם val, ומספר שלם וחיובי position. כותרת הפעולה: public static MyNode addNumber(MyNode list, int val, int position) הפעולה צריכה להכניס איבר חדש לשרשרת במיקום position (המיקום של האיבר הראשון בשרשרת הוא 1). ערך התכונה value של האיבר החדש יהיה שווה לפרמטר val. השרשרת שתתקבל צריכה לשמור על החוקים של השרשרת המקורית לגבי התכונה howManyBig.
מהי סיבוכיות הפעולה? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.