inflearn logo
강의

Course

Instructor

Linear Data Structures for People Who Learned C the Hard Way

Improve and verify list with dummy head

마지막 열의 노드를 삭제하였을때 읽기 엑세스 위반 발생 건

Resolved

61

giup gun

3 asked

0

안녕하십니까

'더미 헤드를 갖는 리스트로 개선 및 검증' 학습하던 도중에, 마지막 노드인 'jang'을 삭제할 시에 읽기 엑세스 위반 오류가 뜨면서 정상적인 종료가 되지 않았습니다.

 

디버깅으로 살펴보니 pPrev->pNext도 마지막 노드이다 보니 NULL인 상태에서 pPrev->pNext 도 동일하게 NULL 인상태에서 발생한 문제인듯 합니다.

 

제생각에는 마지막 노드를 삭제할때는 pPrev->pNext NULL 경우에 대한 IF 절을 넣는게 맞아보이는데 맞는 조치일까요?

 

image.png

 

 

c 코딩-테스트 알고리즘 vc++

Answer 2

0

nullnull8537

if문으로 NULL인지 체크하면 비정상 종료는 막을 수 있겠으나 더미 헤드와 테일 노드가 모두 운영되는 상황이라면 그런 체크 없이 잘 작동하는 것이 맞겠습니다. 참고하시기 바랍니다. 😄

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

giup gun님, 마지막 노드를 삭제할 때 발생하는 읽기 엑세스 위반 오류에 대해 설명드리겠습니다.

말씀하신 대로, 마지막 노드를 삭제할 때 pPrev->pNextNULL인 경우가 발생할 수 있습니다. 이는 노드를 제거한 후 리스트의 끝 부분을 올바르게 처리하지 않은 경우 생기는 문제입니다.

이런 문제를 해결하려면 삭제하려는 노드가 마지막 노드인지 확인하고, 그에 맞게 처리해 주는 것이 필요합니다. 일반적으로는 다음과 같은 방법을 사용하여 이 문제를 해결할 수 있습니다:

  1. 이전 노드를 확인: 삭제할 노드의 이전 노드 (pPrev)가 있는지 먼저 확인합니다.

  2. 이전 노드의 연결 해제: pPrev->pNextNULL로 설정하여 마지막 노드를 삭제한 후의 연결 상태를 올바르게 만듭니다.

코드로 표현하면 다음과 같은 방식이 될 수 있습니다:

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