inflearn logo
강의

Course

Instructor

(2026 Latest!) Pass the Information Processing Engineer Practical Exam in One Week

(Previous Exam) 2025 Round 1 (2/3) - C Language Structures and Linked Lists

28:40

Resolved

27

polaris2024

1 asked

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 포인터들이 모두 다른 구조체 리스트를 가리키고 있다고 생각하면서 풀었는데 이게 잘못된걸까요..?

python java c 정보처리기사 정보처리산업기사

Answer 2

0

weekendcode

안녕하세요, 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

communityai8509

안녕하세요, 인프런 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의 다음을 가리키게 되는 점이 중요합니다.

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

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

26년 1회 실기 해설 강의

0

31

2

53번 4-1 자료 오류 있는 것 같습니다.

0

60

2

7번문제

0

48

2

C언어 변형문제 9번문제 Pdf 수정요청

0

37

2

메서드 오버드라드

0

40

2

실수

0

41

1

공부 우선순위 우선강의 알려주세요

0

74

1

생성자 호출순서 강의 10번 문제 30분대 질문입니다

0

41

2

25년 2회 기출 5:40 질문입니다.

0

32

2

모의고사1회 3번 파이썬문제

0

64

2

C언어 출제변형 6번 문제

0

43

2

c언어 출제변형 강의 질문

0

24

2

C :  언어 배열과  문자열 수업자료

0

22

2

파이썬 리스트, 딕셔너리 질문

0

35

2

모의고사 관련 질문 건

1

61

3

자료 내용 오류

0

56

2

정적 변수, 정적 메서드(static) v2

0

43

2

v1.2 와 v0.91 PDF

0

94

1

업캐스팅 (부모형태, 자식생성자)

0

45

2

정보처리산업기사 준비중입니다.

0

67

2

실기 D -6

0

100

2

(기출) 2024년 2회 기출문제 - 이론 포함 22분32초 질문입니다

0

51

3

업캐스팅 문제 풀면 업캐스팅이 상속과 문제풀 때 어떻게 해석해야할지 모르겠습니다.

0

53

2

강의파일 통합본

0

74

2