Bağlantılı bir listeden bir düğümü kaldırmaktan nasıl yararlanabilirim?C Bağlantılı listeden düğümü kaldır
İşte benim kodudur:
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;
}
Ama elde seg hataları tutun.
Aptalca bir şey yapıyorum gibi hissediyorum .... Herhangi bir fikir?
Neden "önceki = önceki" yerine "önceki = geçerli" yerine "önceki" geçerli yeniden atamadan önce? –
Ayrıca, bölümleme hataları alıyorsanız, programınızı bir hata ayıklayıcısında çalıştırın. Sorunun olduğu yerde duracak ve calltack ve değişkenleri incelemenize izin ver. En azından sorunuzu, calltack'ı içerecek şekilde düzenlemelisiniz ve sağlanan kodda kilitlenmenin nerede gerçekleştiğine dikkat etmelisiniz. –
Ayrıca, her zaman * geçerli bir * (* kafa) -> sonraki 'işaretçiniz var mı? Liste boşsa ne olur? Listede sadece bir düğüm varsa ne olur? –