강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của taehyun02220664
taehyun02220664

câu hỏi đã được viết

C ngôn ngữ cho những người học nghiêm túc về cấu trúc dữ liệu tuyến tính

Tạo danh sách liên kết dựa trên cấp phát bộ nhớ động

헤드노드에 관해..

Đã giải quyết

Viết

·

221

·

Đã chỉnh sửa

0

계속 그리면서 이해하다가 딜레마에 빠져 질문드립니다 ..

새 노드 추가할때의 그림을 그려보며 이해중이였는데,

else

{

pNewNode->pNext = g_pHeadNode;

g_pHeadNode = pNewNode;

}

이 코드는 이미 헤드노드가 가리키는 '원래노드'가 따로 있는건데

그렇다면 pNewNode의 pNext엔 헤드노드 주소값을 넣으면

pNewNode는 AddNewNode에서 초기화된 각자의 멤버값을 가지면서 pNext를 따라가면 헤드노드가 나오게 되고, 그 헤드노드의 pNext를 따라가면 '원래노드'가 나오게 되는데

그 상태로 g_pHeadNode = pNewNode; 를 수행하게 되면 헤드노드에 pNewNode값이 오버라이트되게 되는건데 그럼 이 상황에선

기존헤드노드에 뉴노드멤버들의 값들과 pNext엔 헤드노드의 주소값, 이걸 따라가면 뉴노드멤버들의 값들과 pNext엔 헤드노드가 가리켰던 '원래노드'의 주소값, 이걸 따라가면 '원래노드'멤버들의 값과 pNext값 . . . 이렇게 생각하면 되는건가요 ?

그럼 결국엔 이 상황에선 g_pHeadNode와 pNewNode는 pNext를 제외한 모든 멤버변수들이 같은값을 가지고 있는 상황인거라고 해석하면 되는건가요 ? ( 뭔가 3개의 노드가 다 다른 멤버변수값을 가져야할것만 같은데, 2개의 노드가 같은 멤버변수값을 가지는거같아 이상하여 이해한게 맞나, 아니면 개념을 잘못잡은건가 싶어 질문드립니다 )

질문이 길어져 죄송합니다 . . .

c코딩-테스트알고리즘vc++

Câu trả lời 3

1

taehyun0222님의 프로필 이미지
taehyun0222
Người đặt câu hỏi

이 질문드릴때 강의 뒷내용을 다 안 보고 질문드린거였는데 강의 다 보니까 이해가 되었습니다 ... ㅎㅎ 항상 좋은 강의 감사합니다 :)

 

0

nullnull8537님의 프로필 이미지
nullnull8537
Người chia sẻ kiến thức

스스로 답을 찾으셨군요. 매우 좋은 일이 아닐 수 없습니다. 꼭 완강하시길 응원합니다. 😄

0

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

현재 질문하신 내용은 이중 연결 리스트에서 새로운 노드를 추가할 때의 동작 원리에 관한 것입니다. 이를 이해하기 쉽게 요약하면 다음과 같습니다:

  1. pNewNode->pNext = g_pHeadNode; 코드는 새로 추가하는 노드(pNewNode)의 pNext가 현재 헤드 노드(g_pHeadNode)를 가리키도록 설정하는 것입니다. 이로 인해 새로운 노드가 기존의 헤드를 다음 노드로 삼게 됩니다.

  2. g_pHeadNode = pNewNode;는 이제 새로 추가한 노드가 헤드가 되도록 설정합니다. 따라서 새로운 노드는 헤드가 되고, 기존 노드는 새로 추가된 노드의 다음 노드가 됩니다.

이 과정을 통해 링크드 리스트의 앞 부분에 새로운 노드가 삽입됩니다. 여러 노드의 값이 동일하게 보일 수 있지만, 중요한 것은 pNext에 각 노드가 가리키는 위치가 다르다는 것입니다.

이를 정리하면:

  • pNewNode의 멤버 변수가 헤드 노드로 설정되고, pNext는 이전 헤드를 가리킵니다.
  • 새로운 g_pHeadNodepNewNode가 되고, 이로 인해 노드 간의 연결성을 유지하면서 리스트 앞부분에 새로운 요소를 추가하게 됩니다.

다음의 게시물도 관련된 내용을 잘 설명하고 있습니다:
- 이중 연결 리스트 AddNewNode 함수 질문

이해하시기에 도움이 되었기를 바랍니다. 더 궁금한 점이 있으시면 언제든지 질문해 주세요!

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

Hình ảnh hồ sơ của taehyun02220664
taehyun02220664

câu hỏi đã được viết

Đặt câu hỏi