עבור לתוכן

רשימות מקושרות ב- C שאלה של מתחילים

Featured Replies

פורסם

שלום.

אני רוצה לכתוב פונקציה ב- C (לא C++) שמקבלת פוינטר לתחילת רשימה מקושרת ומשחררת כל איבר ברשימה ולבסוף מחזירה את Head כ- NULL.

תודה.

רצ"ב פונקציה שכתבתי שלדעתי מוחקת הכל אך לא הצלחתי לבנות אותה כך שתחזיר NULL.

[attachment deleted by admin]

פורסם

אני מניח שניסיתי להוסיף בסוף את השורה

Head = null;

ותהית למה זה לא פעל.

על מנת לשנות את הערך של הפרמטר שמתקבל לפונקציה, אתה צריך להעביר מצביע לערך הזה (כי ערכים ב-C עוברים by value, כלומר הם מועתקים).

כלומר זה מה שאתה צריך לעשות:

void FreeNymList (NymWord ** Head) {
if ((*Head)->Next) {
FreeNymList (&((*Head)->Next));
}
free (*Head);
*Head = null;
}

פורסם

אם הפונקציה אמורה למחוק את הרשימה, למה היא צריכה להחזיר משהו בכלל?

פורסם
  • מחבר

אם הפונקציה אמורה למחוק את הרשימה, למה היא צריכה להחזיר משהו בכלל?

כדי שאח"כ אני לא אצטרך ידנית לעדכן את ערך המצביע ל- NULL.

תודה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים