해결된 질문
24.05.30 17:27 작성
·
124
0
안녕하세요 오랜만에 질문드립니다.
현재 가정을 헤드노드->Test03->Test02->Test01->테일노드 이렇게 있다고 가정을 했을 때
pPop->pNext->pPrev = g_TailNode.pPrev; 이 코드에서 질문있습니다.
제가 이해한것을 풀어쓰느라 조금 길거 같습니다.
흐름상 pop 구조체 포인터가 Test03노드를 가리키고 있고 헤드의 다음노드를 Test02로 바꾸는것까지 이해했습니다.
그다음 pop 다음 노드의 이전 노드 즉 Test02의 이전 노드가 테일 노드의 이전 노드를 가리킨다고 하는데 현재 흐름 상 보면 Test03의 다음노드의 이전노드가 Test01노드라고 하는걸로 해석이 됩니다.
제가 어느 부분에서 이해를 못한 건지 모르겠습니다.
그리고 다음 코드를 이렇게 고쳐도 출력에는 이상이 없는 것으로 확인됩니다.
답변 1
0
2024. 05. 31. 19:49
스택에 노드가 하나 뿐이면 모르겠지만 pPop->pNext 노드가 Test03의 다음 노드가 될 수 있는데 그렇다면 Test02가 되어야 하겠습니다. 그런데 그것이 g_TailNode와 관련이 있을 수도 있고 아닐 수도 있습니다. 즉, 스택에 더 꺼낼 노드가 남아 있다면 g_TailNode가 바로 등장할 이유는 없겠습니다.
그리고 출력에 이상이 없다고 했는데...
Test03->Test02->Test01 이렇게 세 노드가 있는 상태에서 데이터를 하나 Pop한 후 출력해보시기 바랍니다. 아마도 유실되는 노드가 있을 것입니다. 이에 관한 문제의 원인을 찾아 분석해보시기를 권합니다. 😄