LinkedList.h
LinkedList.cpp
#include "LinkedList.h"
#include <iostream>
//연결형 리스트 초기화 함수 구현
void initList(stLinkedList* pList)
{
pList->pHeadNode = nullptr;
pList->count = 0;
}
//연결형 리스트 데이터 추가 함수 구현
void PushBack(stLinkedList* pList, int intData)
{
//stNode 포인터 pNode 동적 할당
stNode* pNode = (stNode*)malloc(sizeof(stNode));
//pNode의 멤버 iData값은 매개변수 intData;
pNode->iData = intData;
//PushBack이기 때문에 pNode 의 다음 노드는 없음으로 null포인터
pNode->pNextNode = nullptr;
//데이터가 하나도 없을 경우
if (pList->pHeadNode == nullptr)
{
pList->pHeadNode = pNode;
}
//데이터가 하나 이상일 경우
else
{
//지역변수 pCurrentFinalNode 생성 -> 반복하면서 pNextNode가 nullptr인 자리를 찾아줌
stNode* pCurrentFinalNode = pList->pHeadNode;
while (true)
{
if (pCurrentFinalNode->pNextNode == nullptr)
{
//null포인터면 반복문 탈출
break;
}
//nullptr가 아닌경우 변수안에 그다음 자리의 주소를 넣어줌
pCurrentFinalNode = pCurrentFinalNode->pNextNode;
}
//null 포인터를 찾았으니 null 포인터 자리에 추가된 데이터의 주소를 넣어줌
pCurrentFinalNode->pNextNode = pNode;
}
//리스트 의 카운트 멤버 증가
++pList->count;
}
//연결형 리스트 앞쪽으로 데이터 추가 함수 구현
void PushFront(stLinkedList* pList, int intData)
{
stNode* newNode = (stNode*)malloc(sizeof(stNode));
newNode->iData = intData;
//새로 생성한 노드의 다음은 리스트가 가리키고 있는 첫번째 pHeadNode
newNode->pNextNode = pList->pHeadNode;
//리스트 pHeadNode 포인터를 갱신
pList->pHeadNode = newNode;
//데이터 가운트 증가
++pList->count;
}
//연결형 리스트 힙 메모리 영역 할당 해제 함수 구현
void ReleaseList(stLinkedList* pList)
{
stNode* deletNode = pList->pHeadNode;
//deletNode 가 true일 동안(0이 아닌동안 = nullptr이 아닌동안) 0이면 반복문 탈출
while (deletNode)
{
stNode* pNext = deletNode->pNextNode;
free(deletNode);
deletNode = pNext;
}
}
main.cpp
'c & c++ > 자료구조' 카테고리의 다른 글
iterator 연산자 함수 구현 (0) | 2022.08.23 |
---|---|
vector(가변배열) iterator(반복자) 구현 (0) | 2022.08.16 |
반복자(Iterator) (0) | 2022.08.16 |
연결형 리스트 구현 (0) | 2022.08.12 |
가변 배열 (0) | 2022.08.01 |
댓글