Linear Data Structures for People Who Learned C the Hard Way
Improve and verify list with dummy head
마지막 열의 노드를 삭제하였을때 읽기 엑세스 위반 발생 건
안녕하십니까
'더미 헤드를 갖는 리스트로 개선 및 검증' 학습하던 도중에, 마지막 노드인 'jang'을 삭제할 시에 읽기 엑세스 위반 오류가 뜨면서 정상적인 종료가 되지 않았습니다.
디버깅으로 살펴보니 pPrev->pNext도 마지막 노드이다 보니 NULL인 상태에서 pPrev->pNext 도 동일하게 NULL 인상태에서 발생한 문제인듯 합니다.
제생각에는 마지막 노드를 삭제할때는 pPrev->pNext NULL 경우에 대한 IF 절을 넣는게 맞아보이는데 맞는 조치일까요?

Answer 2
0
if문으로 NULL인지 체크하면 비정상 종료는 막을 수 있겠으나 더미 헤드와 테일 노드가 모두 운영되는 상황이라면 그런 체크 없이 잘 작동하는 것이 맞겠습니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
giup gun님, 마지막 노드를 삭제할 때 발생하는 읽기 엑세스 위반 오류에 대해 설명드리겠습니다.
말씀하신 대로, 마지막 노드를 삭제할 때 pPrev->pNext가 NULL인 경우가 발생할 수 있습니다. 이는 노드를 제거한 후 리스트의 끝 부분을 올바르게 처리하지 않은 경우 생기는 문제입니다.
이런 문제를 해결하려면 삭제하려는 노드가 마지막 노드인지 확인하고, 그에 맞게 처리해 주는 것이 필요합니다. 일반적으로는 다음과 같은 방법을 사용하여 이 문제를 해결할 수 있습니다:
이전 노드를 확인: 삭제할 노드의 이전 노드 (
pPrev)가 있는지 먼저 확인합니다.이전 노드의 연결 해제:
pPrev->pNext를NULL로 설정하여 마지막 노드를 삭제한 후의 연결 상태를 올바르게 만듭니다.
코드로 표현하면 다음과 같은 방식이 될 수 있습니다:
if (pPrev != NULL) {
pPrev->pNext = NULL;
}
이렇게 수정하면, 마지막 노드를 삭제한 후에도 리스트의 구조가 깨지지 않고 정상적으로 유지됩니다.
이미지에서 보여주신 링크드 리스트 관리 코드는 일반적인 C 언어 스타일의 코드로 보이며, 이런 에러를 방지하기 위한 체계적인 접근을 통해 해결할 수 있을 것입니다.
참고할 만한 유사한 질문 링크도 제공해드리니, 큰 그림을 그리실 때 도움이 되셨으면 합니다:
- 메모리 관리를 위한 더미 노드 사용하기
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
05_adtFileIO 개정이력에 대한 질문
0
42
2
첫번째 루프에서 최소값을 못찾았는데 계속 진행하는 이유가 무엇인가요?
0
47
1
[질문]: [섹션4] -> [2중 연결 리스트로 전환] -> [21:30]
0
129
2
인덱스정렬 강의, 04_ListAndIndex질문드립니다.
0
125
1
예제는 어디서 다운로드 받을 수 있나요?
0
178
2
04_MultiIndex 예제에서 질문이 있습니다
0
120
1
헤드노드에 관해..
0
231
3
AddNewNode 함수 구현시 질문입니다.
0
160
2
Event Loop
0
191
1
인덱스정렬 강의, 04_ListAndIndex질문드립니다.
0
192
1
CPU의 다른 이름 Machine 강의 질의
0
273
4
스택의 POP코드 질문드립니다.
0
259
1
adtFileIO 예제코드관련 질문 있습니다.
0
170
1
ADT강의 관련 질문 있습니다.
0
231
2
RangeSearch002 의 singlelist.c 파일 중 질문 있습니다.
0
192
1
섹션4 자료 자체와 정렬된 인덱스 분리 내용 질문
0
252
2
자료 자체와 정렬된 인덱스 분리 강의에서 질문
0
234
2
구현 연습에 대한 개인적 의문
0
279
1
05_adtFileIO 프로젝트 문의
0
318
2
CLI UI적용 강의에서 질문드립니다.
0
333
1
SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?
0
293
1
05_adtFileIO 프로젝트 문의
0
257
1
자료 자체와 정렬된 인덱스 분리 (인덱스 정렬) - 인덱스 범위 코드에 버그가 있어서 질문 드립니다.
0
304
2
강의자료 관련
0
203
1

