मैं किसी लिंक किए गए सूची से नोड को हटाने के बारे में कैसे जा सकता हूं?सी लिंक की गई सूची से नोड निकालें
यहाँ मेरी कोड है:
void RemoveNode(Node * node, Node ** head) {
if (strcmp(node->state, (*(*head)->next).state) == 0) {
Node * temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node * current = (*head)->next;
Node * previous = *head;
while (current != NULL && previous != NULL) {
if (strcmp(node->state, (*current->next).state) == 0) {
Node * temp = current;
previous->next = current->next;
free(temp);
return;
}
current = current->next;
previous = previous->next;
}
return;
}
लेकिन मैं हो रही SEG दोष रहते हैं।
मुझे लगता है कि मैं कुछ बेवकूफ कर रहा हूं .... कोई विचार?
मौजूदा पुन: असाइन करने से पहले 'पिछला = वर्तमान' की बजाय 'पिछला = पिछला-> अगला' क्यों करें? –
इसके अलावा, अगर आपको सेगमेंटेशन दोष मिलते हैं, तो अपने प्रोग्राम को डीबगर में चलाएं। यह आपको रोक देगा जहां आपको अपनी समस्या है, और आप कॉलस्टैक और चर की जांच कर सकते हैं। कम से कम आपको कॉलस्टैक को शामिल करने के लिए अपना प्रश्न संपादित करना चाहिए, और बताएं कि प्रदान किए गए कोड में क्रैश होता है। –
इसके अलावा, क्या आप हमेशा * वैध * (* सिर) -> अगला 'सूचक है? अगर सूची खाली है तो क्या होगा? अगर सूची में केवल एक नोड है तो क्या होगा? –