목록자료구조_구현시 실행착오 정리 (4)
개발자 블로그
Node* LLS_Pop(LinkedListStack* Stack) { //1. 최상위 노드의 주소를 다른 포인터에 복사 //2. 새로운 최상위 노드(현재 최상위 노드)의 바로 아래(이전) 노드를 찾는다. //3. LinkedListStack 구조체의 Top 필드에 새로운 최상위 노드의 주소를 등록한다. //4. 1에서 포인터에 저장했던 예전 최상위 노드의 주소를 반환한다. Node* TopNodePtr = Stack->tailNode; Node* CurrentNodePtr = Stack->headNode; while (CurrentNodePtr->nextNode != TopNodePtr) { CurrentNodePtr = CurrentNodeP..
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; //print..

주석에서와 같이 Data를 넣어서 node 생성해야한다..

Linked List 구현시 headNode, tailNode 라는 용어가 있었고 Linked List Stack 에서는 tailNode 보다는 Stack 구조를 나타내기 좋은 단어인 topNode 가 맞다고 생각한다. 일단 아래 함수에서는 tailNode로 사용함. Push 함수 내에서 Node 변수를 heap 할당 하였다. 이렇게 되면 Main 문에서 Push함수 할당 할 때 마다 동일한 heap 공간을 할당하게 된다. push head a, 주소 push tail b, 주소 두 Node 변수의 주소가 같게 된ㄷㅏ. 따라서 Node 할당은 push 호출하는 상위(Main)함수에서 해줘야 함을 알 수 있다.