인프런 커뮤니티 질문&답변
직접 구현하는 연결리스트 3 - 추가 부분 질문있습니다
작성
·
93
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.

강의 보기 전에 미리 만들어 본 코드입니다.
3번째 줄에서 afterNode를 안 만들고 주석처리한 코드를 afterNode 자리에 넣으니

오류가 발생하네요
그리고

수업중 코드에서도 2번째줄 코드 위치만 바껴도 위와 똑같은 오류가 발생하네요
왜그런걸까요?
퀴즈
기본적인 단일 연결 리스트에서 노드의 주요 구성 요소는 무엇일까요?
값과 인덱스
값과 다음 노드 참조
이전 노드 참조와 다음 노드 참조
인덱스와 다음 노드 참조
답변 3
0
1.제가 미리 만들어본 코드는 말씀하신대로 노드간 연결 순서랑은 관계없어 보입니다.
마지막줄에서 afterNode 대신 주석처리한걸 썼을 때 오류가 왜 발생했는지 답변으론 이해가 잘 안되네요
2. 앞에서 말한 노드간 연결 순서로 보면 강의에서 나온 코드가 prev.next = newNode; 다음에 newNode.next = prev.next; 이게 맞는것 같은데 이때도 1번과 동일한 오류가 발생하네요
0
안녕하세요, 인프런 AI 인턴입니다.
박혁진님께서 제시하신 질문은 연결 리스트를 구현할 때 노드를 추가하는 과정에서 발생하는 문제에 대한 것이군요. 연결 리스트에서 노드를 추가할 때 올바른 순서로 포인터를 설정하지 않으면, 종종 무한루프나 메모리 오류와 같은 문제가 발생할 수 있습니다.
아래에서 문제의 근본 원인과 해결 방법을 설명드리겠습니다:
노드 연결 순서:
- 새 노드를 기존 리스트에 중간에 삽입할 때,
beforeNode와newNode, 그리고afterNode의 연결 순서가 중요합니다.beforeNode의 다음 노드를newNode로 설정한 후,newNode의 다음 노드를afterNode로 설정하는 것이 일반적인 순서입니다.
- 만약 이 순서가 어긋나게 되면 같은 노드가 반복적으로 참조되거나, 잘못된 참조로 인해 무한 루프가 발생해서 스택 오버플로우나 메모리 초과 오류가 발생할 수 있습니다.
- 새 노드를 기존 리스트에 중간에 삽입할 때,
코드에서의 오류 발생:
- 코드 이미지에서 노드 연결 순서가 잘못되어 있을 경우
OutOfMemoryError가 발생할 수 있습니다. 이는 특히toString메서드에서 리스트를 출력할 때 무한 루프가 발생하기 때문에 일어날 수 있습니다. 리스트의 끝이 없기 때문에 문자열을 계속해서 생성하려고 시도하면서 메모리가 초과됩니다.
- 코드 이미지에서 노드 연결 순서가 잘못되어 있을 경우
해결책:
- 노드의 연결 순서를 올바르게 설정하십시오:
beforeNode.next = newNode;
newNode.next = afterNode;
- 위의 순서를 유지할 경우,
beforeNode가newNode를 가리키고,newNode가afterNode를 가리키게 되어 정상적으로 연결이 완료됩니다.
- 노드의 연결 순서를 올바르게 설정하십시오:
관련된 문제를 다루는 유사한 질문과 답변을 확인하실 수 있는 링크를 제공해 드릴게요:
LinkedList 구현 시 질문: 제네릭 타입으로 변환 시 발생할 수 있는 문제에 대한 논의가 포함되어 있습니다.
섹션 4. 직접 구현하는 연결 리스트 제네릭 도입: 연결 리스트의 제네릭 타입 도입과 관련한 문제를 다루고 있습니다.
이미지 속 코드들도 참고하면서 노드의 연결 순서를 바르게 잡는 시도를 해보시면 좋을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





