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

최종원님의 프로필 이미지
최종원

작성한 질문수

독하게 C를 배운 사람을 위한 선형 자료구조

Stack과 Queue

스택의 POP코드 질문드립니다.

해결된 질문

작성

·

140

0

안녕하세요 오랜만에 질문드립니다.

현재 가정을 헤드노드->Test03->Test02->Test01->테일노드 이렇게 있다고 가정을 했을 때

pPop->pNext->pPrev = g_TailNode.pPrev; 이 코드에서 질문있습니다.

제가 이해한것을 풀어쓰느라 조금 길거 같습니다.

흐름상 pop 구조체 포인터가 Test03노드를 가리키고 있고 헤드의 다음노드를 Test02로 바꾸는것까지 이해했습니다.

그다음 pop 다음 노드의 이전 노드 즉 Test02의 이전 노드가 테일 노드의 이전 노드를 가리킨다고 하는데 현재 흐름 상 보면 Test03의 다음노드의 이전노드가 Test01노드라고 하는걸로 해석이 됩니다.

제가 어느 부분에서 이해를 못한 건지 모르겠습니다.

그리고 다음 코드를 이렇게 고쳐도 출력에는 이상이 없는 것으로 확인됩니다.

답변 1

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

스택에 노드가 하나 뿐이면 모르겠지만 pPop->pNext 노드가 Test03의 다음 노드가 될 수 있는데 그렇다면 Test02가 되어야 하겠습니다. 그런데 그것이 g_TailNode와 관련이 있을 수도 있고 아닐 수도 있습니다. 즉, 스택에 더 꺼낼 노드가 남아 있다면 g_TailNode가 바로 등장할 이유는 없겠습니다.

그리고 출력에 이상이 없다고 했는데...

Test03->Test02->Test01 이렇게 세 노드가 있는 상태에서 데이터를 하나 Pop한 후 출력해보시기 바랍니다. 아마도 유실되는 노드가 있을 것입니다. 이에 관한 문제의 원인을 찾아 분석해보시기를 권합니다. 😄

최종원님의 프로필 이미지
최종원

작성한 질문수

질문하기