어떻게 링크 된 목록에서 노드를 제거 할 수 있습니까?C 링크 된 목록에서 노드 제거
여기 내 코드입니다 :
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;
}
그러나 나는 점점 독방 감금 오류를 유지한다.
나는 바보 같은 짓을하고있는 것 같은 느낌이 든다. 어떤 아이디어?
현재를 재 할당하기 전에'previous = current' 대신'previous = previous-> next '를 사용하는 이유는 무엇입니까? –
또한 세그먼트 화 오류가 발생하면 디버거에서 프로그램을 실행하십시오. 문제가있는 곳에서 멈추고 콜 스택과 변수를 검사 할 수 있습니다. 최소한 콜 스택을 포함하도록 질문을 편집하고 제공된 코드에서 충돌이 발생하는 지점을 지적해야합니다. –
또한'* (* head) -> next '포인터가 항상 있을까요? 리스트가 비어 있다면? 목록에 단 하나의 노드가 있다면? –