강의

멘토링

커뮤니티

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

조찬희님의 프로필 이미지
조찬희

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

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

27:56

해결된 질문

작성

·

10

0

prev->next = curr->next

해석이 curr->next 값을 prev->next에 넣으라는 뜻이 아닌가용???

 

4->3 = 3->2

2와 3위치를 바꾸는게 아닌가요...?

 

원래 뒤에거를 앞에 덮어쓰는게 아닌가요..?

너무 헷갈리네요 ㅠㅠ

답변 2

0

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

안녕하세요,

 

4->3 = 3->2

2와 3위치를 바꾸는게 아닌가요...?

-> 이 부분을 어떻게 해석하셨는지 저도 알아듣기가 조금 어려워서, 처음부터 설명을 다시 드려보겠습니다.

 

우리가 구조체에서 ->를 배울 때, "포인터가 가리키고 있는 것은 직접 접근하는 것이 아니기 때문"화살표라는 연산자를 사용한다고 했습니다. 직접 접근은 점(.)으로 한다고 배웠고요.

 

그래서

prev->next = curr->next

이 구문을 단순히 한글로 풀어내자면,

"prev라는 포인터가 가리키고 있는 어떤 영역에서의 next에다가

curr라는 포인터가 가리키고 있는 next를 할당하라" 입니다.

 

그런데 어쩌다 보니 next라는 것 조차도 값이 아니라 포인터입니다.

포인터의 할당은 앞에서도 배웠지만 메모리 주소를 넘겨줍니다.

그래서 prev->next가 이전에 curr->next가 가리키고 있는 주소를 넘겨 받습니다.

 

그게 끝입니다. 그 이상의 해석은 없습니다.

0

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

질문하신 prev->next = curr->next 구문은 링크드 리스트에서 특정 노드를 제거할 때 주로 사용되는 패턴입니다. 이 구문이 의미하는 바는 curr이 가리키는 노드의 다음 노드를 prev의 다음 노드로 설정한다는 것입니다. 이를 통해 curr 노드를 리스트에서 제거하는 효과를 얻습니다. 간단히 말해, 리스트에서 curr 노드를 건너뛰고 다음 노드로 연결하여 curr을 링크드 리스트에서 제외시키는 것입니다.

예를 들어, 리스트가 1 -> 2 -> 3 -> 4로 연결되어 있고 curr3 노드를 가리킨다면, prev->next = curr->next 구문을 수행하면 리스트는 1 -> 2 -> 4가 됩니다. 이 과정에서 3은 리스트에서 제거됩니다.

이러한 개념은 링크드 리스트에서 노드를 조작할 때 중요하게 사용되는 기법이니, 몇 번의 연습을 통해 익숙해지시면 좋겠습니다.

관련하여 참고하실 수 있는 유사한 Q&A가 있습니다. 이 링크들을 통해 추가적인 설명을 확인해 보시기 바랍니다:
- 링크드 리스트의 기본 조작 이해하기
- 링크드 리스트에서 특정 노드 제거

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

조찬희님의 프로필 이미지
조찬희

작성한 질문수

질문하기