שאלות תרגיל בית 1

ערעור על החלק היבש

ערעור על החלק היבש

על ידי גילי דואק בתאריך
מספר תגובות: 2

שלום,

ברצוננו לערער על ההערה שקיבלנו בחלק היבש בשאלה הראשונה:

 

 

נשים לב שהפונקציה היחידה שמשתמשת בפונקציה copyList (בה נכתבה ההערה) היא הפונקציה mergeSortedLists.

אם נבחן את הפונקציה mergeSortedLists נשים לב כי אנו שולחים לפונקציה copyList מצביע לרשימה merged_out. בנוסף נשים לב כי במהלך ריצת הפונקציה mergeSortedLists איננו מקדמים את המצביע merged_out ומכאן שהוא תמיד מצביע על האיבר הראשון ברשימה merged_out.

נחזור לבחון את הפונקציה copyList, נשים לב שאם הגענו לשורה עליה נכתבה ההערה, אזי התקיים *dest_list == NULL כאשר dest_list  הוא למעשה merged_out.

כלומר התקיים *merged_out == NULL  ומכך נובע כי האיבר הראשון של merged_out הוא NULL, לכן אם ההקצאה לא הצליחה אין צורך למחוק את הרשימה, שכן זו ריקה מלכתחילה.

כמובן שכאשר מתקיים ש-*merged_out != NULL, כלומר אם הפונקציה איננה נכנסת ל-if, אזי במקרה של הקצאה שנכשלה אנו מוחקים את הרשימה (כפי שניתן לראות – אנו משתמשים בפונקציה addNodeOrDestroyList).

 

נשמח להתייחסותכם, תודה רבה.