강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

polaris2024님의 프로필 이미지
polaris2024

작성한 질문수

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

(기출) 2025년 1회 (2/3) - C언어 구조체와 연결리스트

28:40

해결된 질문

작성

·

25

0

prev->next = curr->next;
이 코드줄 이후로 prev 노드 리스트가 4->2->1로 변경되서 3이 빠진건 이해 됬는데

curr->next = head;
여기서 head가 가리키고 있는 노드 리스트가 왜 3이 빠진걸까요?

 

저는 curr->next = head; 실행 이후 시점에서 아래처럼 해석해서 답이 354321 나왔습니다 ㅠ.
prev 노드 리스트: 4->2->1
curr 노드 리스트: 3->5->4->3->2->1

 

prev,curr,head 포인터들이 모두 다른 구조체 리스트를 가리키고 있다고 생각하면서 풀었는데 이게 잘못된걸까요..?

퀴즈

51%나 틀려요. 한번 도전해보세요!

자바 상속에서 자식 객체 생성 시 생성자 호출 순서의 첫 단계는 무엇일까요?

자식 클래스 생성자 코드 실행

부모 클래스의 기본 생성자 호출

자식 클래스 메소드 호출

정적 초기화 블록 실행

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요, head가 직접 3을 가리키는 것이 아니라 줄줄이 가리키고 있었는데

중간에 있던 부분을 생략하고 3이 가리키고 있던 것을 이전 노드가 가리키라고 변경했기 때문에 그렇습니다.

 

한글로는 조금 어려워서 그림을 그려보자면

head -> 5

5 -> 4

4 -> 3

3 -> 2

 

prev->next = curr->next; 이렇게 하면

4 -> 3이 끊기고 4 -> 2가 됩니다.

말씀하신 대로 이 때 3이 끊긴 것이고요.

 

그 다음 질문 주신 curr -> next = head;는

이 시점에서 curr은 3, head 5이기 때문에

3의 next = 5가 되어서

3 -> 5 -> 4 -> 2 -> 1 요렇게 됩니다.

 

3이 빠진 것은 그 위에서 3을 가리키고 있는 것을 빼고, 그 다음 것을 가리키라고 변경했기 때문입니다.

 

 

0

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

질문하신 내용은 링크드 리스트에서의 노드 재배치와 포인터 조작에 관련된 사항으로 보입니다. 이 문제는 포인터들을 잘 이해하고, 리스트 조작의 과정에서의 포인터 재배열을 명확히 이해해야 합니다.

설명

  1. prev->next = curr->next; 이 코드 줄은 curr 노드를 리스트에서 제거하는 역할을 합니다. 4에서 3을 건너뛰고 2로 바로 연결합니다.

  2. curr->next = head; 이 줄은 리스트의 맨 앞에 curr 노드를 추가하는 것입니다. 즉, curr 노드(여기서는 3) 다음에 head 노드를 설정하여 리스트의 가장 앞에 curr 노드를 두는 것입니다.

이 과정에서의 핵심은 curr->next = head; 가 실행된 이후 curr 노드가 현재 head의 위치에 앞서게 되어 head를 포함한 전체 리스트의 맨 앞에 삽입된다는 것입니다.

그래서 최종 리스트는 먼저 curr인 노드가 머리로 오고, 그 뒤에 이전의 head 노드부터 나머지 노드들이 차례로 이어지게 됩니다.

포인터 이해의 핵심

  • prev, curr, head는 모두 동일한 리스트 내의 노드들입니다. 각각 다른 리스트를 가리키고 있지 않습니다.
  • curr가 리스트의 맨 앞으로 이동하고, headcurr의 다음을 가리키게 되는 점이 중요합니다.

기존에 유사한 질문들이 있습니다. 다음 링크들을 통해 추가적인 설명을 참고하시면 이해에 더 좋을 것 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

polaris2024님의 프로필 이미지
polaris2024

작성한 질문수

질문하기