מבחן 2009 מועד א' שאלה 4 - טעות בפיתרון?

מנהלים: TA_nimrod, TA_Igor, TA_Adi, TA_nimrod, TA_Igor, TA_Adi

שלח תגובה
eliorar
הודעות: 35
הצטרף: 19:43 11/11/2009

מבחן 2009 מועד א' שאלה 4 - טעות בפיתרון?

שליחה על ידי eliorar » 12:36 22/01/2010

השאלה הייתה לכתוב שיטה שמוסיפה איבר לרשימה ככה שתישאר ממויינת.
הפתרון שניתן הוא:

קוד: בחירת הכל

public void add(Comparable data){
ComparableLink l=new ComparableLink(data); 
ComparableLink tmp=sentinal;
while(tmp.next!=null && data.compareTo(tmp.next.data)>0) 
      tmp=tmp.next;
l.next=tmp.next; 
tmp.next=l;
}
לא נבדק מה קורה אילו הרשימה ריקה ואז יכול להיווצר מצב ש tmp = null ובעצם אין לו בכלל next והתכנית עפה.

efrat
הודעות: 33
הצטרף: 00:01 25/10/2009

Re: מבחן 2009 מועד א' שאלה 4 - טעות בפיתרון?

שליחה על ידי efrat » 12:48 22/01/2010

eliorar כתב:השאלה הייתה לכתוב שיטה שמוסיפה איבר לרשימה ככה שתישאר ממויינת.
הפתרון שניתן הוא:

קוד: בחירת הכל

public void add(Comparable data){
ComparableLink l=new ComparableLink(data); 
ComparableLink tmp=sentinal;
while(tmp.next!=null && data.compareTo(tmp.next.data)>0) 
      tmp=tmp.next;
l.next=tmp.next; 
tmp.next=l;
}
לא נבדק מה קורה אילו הרשימה ריקה ואז יכול להיווצר מצב ש tmp = null ובעצם אין לו בכלל next והתכנית עפה.
מההגדרה של ה sentinel, הוא תמיד קיים ולעולם לא שווה ל null (ולכן ה tmp לא יהיה null).
נערך לאחרונה על ידי efrat ב 12:52 22/01/2010, נערך 2 פעמים בסך הכל.

danny
הודעות: 64
הצטרף: 12:32 23/10/2009

Re: מבחן 2009 מועד א' שאלה 4 - טעות בפיתרון?

שליחה על ידי danny » 12:49 22/01/2010

יש קצת שוני באיך שמימשו פה List:

אצלנו התרגלנו שיש first מטיפוס Link שמצביע על Link הראשון.
בתרגיל הזה יש sentinel מטיפוס לינק, שה-next שלו מצביע על האיבר הראשון (לכן האיבר הראשון הוא בעצם השני ברשימה). לאותו sentinel יש data שהוא מחרוזת עם השם "sentinel". אתה רואה כיצד זה שונה מאיך שאנחנו הורגלנו לבנות List.

מכאן - כשהרשימה ריקה עדיין יש sentinel מטיפוס לינק שה-data שלו הוא מחרוזת "sentinel" רק שה-next שלו הוא מצביע על null.
Error is Created. Truth is Eternal. Error, or Creation, will be Burned up, & then, & not till Then, Truth or Eternity will appear

eliorar
הודעות: 35
הצטרף: 19:43 11/11/2009

Re: מבחן 2009 מועד א' שאלה 4 - טעות בפיתרון?

שליחה על ידי eliorar » 12:50 22/01/2010

וואלה צודק, לא שמתי לב.

שלח תגובה

חזור אל “- מבוא למדעי המחשב 2010”