सी में पॉइंटर्स के साथ भ्रमित हो रही है

मैंने पूरी लिंक्ड सूची को हटाने के लिए सी में डिलीट फ़ंक्शन लिखा है। समारोह की परिभाषा
है

void delete(LIST **head)
{
  if(head)
    {
      delete(head->next);
      free(head);
      *head=NULL;
    }
}

संकलन करते समय मुझे त्रुटि मिली: सदस्य <कोड> अगला के लिए अनुरोध किसी संरचना या संघ में नहीं।
संरचना है

typedef struct node{
    int data;
    struct node *next;
}; 
1
रिकर्सन से सावधान रहें - एक बहुत लंबी सूची स्टैक ओवरफ़्लो का कारण बन सकती है। मैं इसके बजाय एक लूप का उपयोग करेंगे।
जोड़ा लेखक Mike Seymour, स्रोत
हटाया गया [सी ++] टैग। यह संभवतः एक सी ++ प्रश्न नहीं हो सकता है। हटाएं C ++ में एक कीवर्ड है।
जोड़ा लेखक AnT, स्रोत

1 उत्तर

head is a pointer to a pointer to LIST. You need to dereference it - *head - to get a LIST* to operate on

void delete(LIST **head)
{
    if(*head)
    {
        delete(&(*head)->next);
        free(*head);
        *head=NULL;
    }
}
4
जोड़ा
मैंने आपके सुझावों के अनुसार अपने कार्यक्रम में बदलाव किए और यह काम करता है। लेकिन जब मैं निष्पादित करने की कोशिश कर रहा हूं, तो यह त्रुटि सेगमेंटेशन गलती (कोर डंप) के साथ समाप्त हो जाता है। मैं समझने में असमर्थ हूं। क्या आप इसे समझने में मेरी मदद कर सकते हैं।
जोड़ा लेखक mahesh cs, स्रोत
हटाएं फ़ंक्शन सही है, इसलिए आपके द्वारा पोस्ट नहीं किए गए कोड में समस्या की संभावना है। क्या आप एक sscce बना सकते हैं जो क्रैश को प्रदर्शित करता है और इसे एक नए प्रश्न के हिस्से के रूप में पोस्ट करता है?
जोड़ा लेखक simonc, स्रोत