개발자 블로그
[Linked List Stack]Push 함수 구현시 Top 노드의 NextNode 본문
void LLS_Push(LinkedListStack* Stack,Node* newNode) {
//이제 Node변수가 heap 할당되어 변수로 넘어올거고
//Stack->head, Top 에다가 매칭해서 넣어줘야 한다.
//Stack->head가 존재하는지 확인
if (Stack->headNode == NULL) {
Stack->headNode = newNode;
//Stack->tailNode = newNode;
printf("Push, headNode %p\n", newNode);
}
else {
Stack->tailNode->nextNode = newNode;
//printf("Push, tailNode 뒤에 newNode, %p\n", newNode);
}
Stack->tailNode = newNode;
printf("Push, tailNode %p\n", newNode);
}
else 문 안 Stack->Top->NextNode = newNode 해주는 이유가 있을까요?
생략해도 잘 돌아가는거 같습니다.
셀프 답변
Stack->Node 생성후 맨처음 Push 함수 실행시
headNode에 노드 주소를 넣는다.
TopNode( Stack->tailNode )에 동일한 노드주소를 넣고 함수를 나간다.
이후 push 호출시 새로운 노드가 오게 되는데
headNode 대신 Stack->tailNode->nextNode 에 새로운 노드주소를 넣고
여기서 잘봐야하는게 지금 Stack->tailNode 의 이전의 push 함수 실행시 발생했던 동작때문에 주소위치는 HeadNode와 같다. 결국엔 headNode의 next에 새로운 노드주소가 입력되게 되는것이다.
그리고 동일하게
TopNode(Stack->Top)에 새로운 노드 주소를 넣고 Push 함수를 빠져 나간다.
'자료구조_구현시 실행착오 정리' 카테고리의 다른 글
[Linked List Stack]Pop함수 구현시 TopNode, HeadNode 처리 (0) | 2024.04.25 |
---|---|
[Linked List Stack]CreateNode 함수 구현시 입력 인자는 당연히 Data가 와야한다. (0) | 2024.04.23 |
[Linked List Stack]Push 함수 구현시 node 변수 heap 할당 위치 (0) | 2024.04.23 |