inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

독하게 C를 배운 사람을 위한 선형 자료구조

삭제 및 결과 검증 코드 작성

연결리스트 삭제 시 헤드노드 NULL인 경우 예외처리의 필요성 재고

해결된 질문

436

TMI_JUNG

작성한 질문수 4

0

연결리스트 삭제 시 헤드노드가 NULL인 경우를 고려해야 하는 이유가 궁금합니다. 삭제 전에 삭제할 노드를 미리 찾는 과정이 수반되는데, 그 과정은 헤드노드가 NULL값이 아니라는 것을 전제로 이루어집니다.

 

따라서 삭제할 노드를 찾아서 삭제를 진행하는 단계까지 왔다는 것은 헤드노드가 NULL이 아니라는 것을 전제로 한다고 볼 수 있습니다. 그럼에도 불구하고 삭제를 진행하는 함수에서 헤드노드가 NULL인 경우를 고려하시고 이에 대한 예외처리 코드를 작성하셨는데, 혹시 그에 대한 이유가 있을까요?

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

답변 2

0

널널한 개발자

수업에서는 연결 리스트 구현 시 더미 헤드 노드를 운영하는 방식과 그렇지 않고 포인터만 사용하는 방식 두 가지를 설명합니다. 이 중 실제 데이터가 담긴 노드를 헤드노드에 대한 포인터를 운영하는 방식일 경우 데이터가 리스트에 하나도 없는 경우란 헤드 노드에 대한 포인터가 nullptr인 경우 입니다. 의견을 주신 것처럼 더미 노드를 운운영하는 방식으로 구현 할 때는 연결 리스트에 데이터가 하나도 존재하지 않는 경우라 하더라도 무조건 하나(더미 헤드 노드)는 존재하기 때문에 nullptr인지 고려할 이유가 없겠습니다. 참고하시기 바랍니다. 😄

0

인프런 AI 인턴

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

TMI_JUNG님, 연결 리스트에서 헤드 노드의 NULL 체크는 중요한 부분입니다.
예외 처리를 통해 헤드 노드가 NULL인지 확인하는 것은 다음과 같은 상황에서 필요합니다:

  1. 함수가 독립적으로 실행되는 경우: 연결 리스트를 관리하는 함수가 다른 부분의 코드와 독립적으로 실행될 수 있기 때문에, 항상 헤드 노드에 대한 검증이 필요합니다. 함수가 언제 어떻게 호출될지 모르므로, 미리 NULL 체크를 함으로써 안정성을 확보할 수 있습니다.

  2. 예상치 못한 오류 대비: 프로그램의 다른 부분에서 오류가 발생하여 헤드 노드가 NULL 상태가 되었을 수 있습니다. 예외 처리를 통해 이러한 오류 상홲에서 안전하게 함수가 동작하도록 보장합니다.

  3. 재사용과 확장성: 현재는 헤드 노드가 NULL이 아닐 것이라는 가정 하에 코드가 작성되어 있지만, 코드를 재사용하거나 기능을 확장할 때, 관련 조건이 달라질 수 있습니다. 예외 처리를 넣어두면 이후 코드를 변경하거나 확장할 때 더 용이합니다.

다시 말해서, 예외 처리는 코드의 안정성을 높이고, 다양한 상황에서 발생할 수 있는 예외 상황에 대비하기 위해 중요합니다. 삭제 함수가 단순히 특정 조건 하에서만 작동한다고 가정하지 않고, 모든 상황에서 안정적으로 작동하도록 설계하는 것이 바람직합니다.

05_adtFileIO 개정이력에 대한 질문

0

44

2

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

0

62

2

첫번째 루프에서 최소값을 못찾았는데 계속 진행하는 이유가 무엇인가요?

0

49

1

[질문]: [섹션4] -> [2중 연결 리스트로 전환] -> [21:30]

0

133

2

인덱스정렬 강의, 04_ListAndIndex질문드립니다.

0

126

1

예제는 어디서 다운로드 받을 수 있나요?

0

180

2

04_MultiIndex 예제에서 질문이 있습니다

0

121

1

헤드노드에 관해..

0

234

3

AddNewNode 함수 구현시 질문입니다.

0

161

2

Event Loop

0

194

1

인덱스정렬 강의, 04_ListAndIndex질문드립니다.

0

194

1

CPU의 다른 이름 Machine 강의 질의

0

275

4

스택의 POP코드 질문드립니다.

0

260

1

adtFileIO 예제코드관련 질문 있습니다.

0

171

1

ADT강의 관련 질문 있습니다.

0

233

2

RangeSearch002 의 singlelist.c 파일 중 질문 있습니다.

0

193

1

섹션4 자료 자체와 정렬된 인덱스 분리 내용 질문

0

253

2

자료 자체와 정렬된 인덱스 분리 강의에서 질문

0

238

2

구현 연습에 대한 개인적 의문

0

280

1

05_adtFileIO 프로젝트 문의

0

320

2

CLI UI적용 강의에서 질문드립니다.

0

337

1

SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?

0

296

1

05_adtFileIO 프로젝트 문의

0

258

1

자료 자체와 정렬된 인덱스 분리 (인덱스 정렬) - 인덱스 범위 코드에 버그가 있어서 질문 드립니다.

0

306

2