28:40
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 포인터들이 모두 다른 구조체 리스트를 가리키고 있다고 생각하면서 풀었는데 이게 잘못된걸까요..?
답변 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님.
질문하신 내용은 링크드 리스트에서의 노드 재배치와 포인터 조작에 관련된 사항으로 보입니다. 이 문제는 포인터들을 잘 이해하고, 리스트 조작의 과정에서의 포인터 재배열을 명확히 이해해야 합니다.
설명
prev->next = curr->next;이 코드 줄은curr노드를 리스트에서 제거하는 역할을 합니다. 4에서 3을 건너뛰고 2로 바로 연결합니다.curr->next = head;이 줄은 리스트의 맨 앞에curr노드를 추가하는 것입니다. 즉,curr노드(여기서는 3) 다음에head노드를 설정하여 리스트의 가장 앞에curr노드를 두는 것입니다.
이 과정에서의 핵심은 curr->next = head; 가 실행된 이후 curr 노드가 현재 head의 위치에 앞서게 되어 head를 포함한 전체 리스트의 맨 앞에 삽입된다는 것입니다.
그래서 최종 리스트는 먼저 curr인 노드가 머리로 오고, 그 뒤에 이전의 head 노드부터 나머지 노드들이 차례로 이어지게 됩니다.
포인터 이해의 핵심
prev,curr,head는 모두 동일한 리스트 내의 노드들입니다. 각각 다른 리스트를 가리키고 있지 않습니다.
curr가 리스트의 맨 앞으로 이동하고,head가curr의 다음을 가리키게 되는 점이 중요합니다.
기존에 유사한 질문들이 있습니다. 다음 링크들을 통해 추가적인 설명을 참고하시면 이해에 더 좋을 것 같습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 26-2회. 9번 질문드립니다!
0
36
1
이론 보면서 질문이 있습니다.
0
39
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
49
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
71
2
262 정처기 실기 C언어코딩
0
29
1
정보처리기사 262 실기 Hash(해시) 질문
0
58
2
static 변수 질문입니다.
0
45
2
파이썬 4강 질문입니다.
0
52
2
모의고사 1회 3번문제
0
75
3
41강 30:10
0
51
2
이론 공부법 질문 있습니다.
0
74
2
부모의 생성자 관련 질문
0
53
2
시험지 문제에 필기해도 되나요?
0
61
3
41강 11:23
0
47
2
4강파이썬 질문입니다
0
46
2
try-catch 핸들러명
0
55
2
36강 3:48
0
57
2
35강 18:27
0
52
2
자식 코드 내 super() 생략
0
51
2
출력질문
0
67
2
31강 4:06
0
57
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
84
3
섹션 2 - 9강 강의자료 다운로드 문제
0
69
3
29강 3:09
0
52
2





