74.6 prev->next = curr->next
, 서 동호님이 작성while (curr != NULL)
{
if (curr->data == data) // 삭제할 노드를 발견하면
{
// 직전 노드의 다음 노드에 현재 노드의 다음 노드를 넣어줌
prev->next = curr->next;
free(curr); // 현재 노드 해제
return;
}
prev = curr; // 현재 노드를 직전 노드 포인터에 저장
curr = curr->next; // 다음 노드로 이동
}
위 함수에서prev->next = curr->next; 를 하고 return 으로 함수를 종료하면
찾고 싶은 노드 다음 노드까지만 연결되고 그 다음 노드는 연결이 안 되지 않나요??
예를 들면 100, 90, ... 50, 이렇게 prev에 저장되다가
찾고 싶은 노드의 데이터 40을 만나면 30을 저장하고 끝나지 않나 하는 생각이 듭니다.. 20, 10 까지 이어져야 하는데 30까지만 연결되고 함수가 끝나 버리는 것이 아닌가요?
회신: 74.6 prev->next = curr->next
, 도장_ 관리자님이 작성연결 리스트에서 노드를 삭제하는 코드입니다.
1 -> 2 -> 3 -> 4
이렇게 연결이 있을 때 2를 삭제하면 1과 3을 연결하고 종료하면 됩니다. 3과 4는 원래 연결되어 있으니까요.
1 -> 3 -> 4