हटाएँ यहाँ एक लिंक्ड सूची से हटाने के लिए मेरी समारोह है:लिंक्ड सूची समारोह
void deleteList(NODE* head)
{
NODE* temp1;
NODE* tempNext;
temp1 = head;
tempNext = NULL;
while(temp1 != NULL)
{
tempNext = temp1->next;
free(temp1);
temp1 = tempNext;
}
}
तो temp1 पहले अंक जहां सिर सूचक इशारा कर रही है। यदि यह NULL
नहीं है, tempNext
सूची के अगले तत्व को इंगित करने के लिए सेट किया जाएगा। फिर पहला तत्व (temp1
) मुक्त है, और temp1
को यह इंगित करने के लिए पुन: असाइन किया गया है कि tempNext
इंगित करता है और दोहराने की प्रक्रिया करता है।
क्या यह पूरी सूची हटाने का सही दृष्टिकोण है?
मैं यह पूछता हूं क्योंकि जब मैं इस फ़ंक्शन का उपयोग करने के बाद सूची मुद्रित करता हूं, तो यह अभी भी सूची प्रिंट करता है। और आईआईआरसी कुछ मुक्त करने से इसे हटा नहीं जाता है, लेकिन केवल इसे उपलब्ध के रूप में चिह्नित करता है, इसलिए मुझे यकीन नहीं है कि यह कैसे सही है या नहीं।
यह भी कि कैसे अपनी सूची की तरह दिखता है पर निर्भर करता है। यदि आपने डेटा के लिए मेमोरी आवंटित की है (यदि आपकी सूची में डेटा के लिए पॉइंटर है) तो आप उसे भी मुक्त करना चाहेंगे और सिर्फ उस सूची में नहीं जो उसमें संदर्भ रखता है। – Jite
@Jite: ओह अच्छा बिंदु ~! मैं भविष्य में –