main.cpp
#include <iostream>
#include "LinkedList.h"
int main()
{
tLinkedList list = {};
InitList(&list);
PushBack(&list, 100);
PushBack(&list, 200);
PushBack(&list, 300);
ReleaseList(&list);
return 0;
}
LinkedList.h
#pragma once
typedef struct _tagNode
{
int iData;
struct _tagNode* pHeadNode;
}tNode;
typedef struct _tagList
{
tNode* pHeadNode;
int iCount; // 카운터
}tLinkedList;
//연결형 리스트 초기화
void InitList(tLinkedList* _pList);
//연결형 리스트 테이터 추가
void PushBack(tLinkedList* _pList, int _iData);
//연결형 리스트 메모리 해제
void ReleaseList(tLinkedList* _pList);
LinkedList.cpp
#include <iostream>
#include "LinkedList.h"
void InitList(tLinkedList* _pList)
{
_pList->pHeadNode = nullptr;
_pList->iCount = 0;
}
void PushBack(tLinkedList* _pList, int _iData)
{
//데이터를 저장할 노드 생성
//데이터 복사
tNode* pNode = (tNode*)malloc(sizeof(tNode));
(*pNode).iData = _iData;
(*pNode).pHeadNode = nullptr;
//추가한 데이터가 처음인지 아닌지
if (0 == _pList->iCount)
{
_pList->pHeadNode = pNode;
}
else
{
//현재 가장 마지막 노드를 찾아서
//해당 노드의 pNext를 생성시킨 노드의 주소로 채움
tNode* pCurFinalNode = _pList->pHeadNode;
while (pCurFinalNode->pHeadNode)
{
pCurFinalNode = pCurFinalNode->pHeadNode;
}
pCurFinalNode->pHeadNode = pNode;
}
++_pList->iCount;
}
void Release(tNode* _pNode)
{
if (nullptr == _pNode)
return;
Release(_pNode->pHeadNode);
free(_pNode);
}
// 힙 영역 할당 제거
void ReleaseList(tLinkedList* _pList)
{
//Release(_pList->pHeadNode);
tNode* pDeletNode = _pList->pHeadNode;
while (pDeletNode)
{
tNode* pNext = pDeletNode->pHeadNode;
free(pDeletNode);
pDeletNode = pNext;
}
}
'C,C++' 카테고리의 다른 글
C,C++ 템플릿 (0) | 2023.07.17 |
---|---|
C,C++ 기초 CLASS / STRUCT (0) | 2023.07.16 |
C,C++기초 함수 포인터 (0) | 2023.07.15 |
C 기초 가변 배열 (0) | 2023.07.14 |
C언어의 기초 문법 (0) | 2023.07.12 |