본문 바로가기
C++/기초

C++ 기초 : 리스트 (1)

글: 시플마 2024. 4. 7.

Linked List(연결형 리스트)라는 것이 있습니다.

 

동적 할당 공간이 필요할 때마다 공간 하나를 할당합니다.

일단 필요한 공간을 배열 형식으로 할당하는 가변 배열과는 다르죠.

 

Linked List는 할당될 때마다 이전 공간과 다음 공간을 연결해 줍니다.

이전 공간에 다음 공간의 주솟값을 저장하고 있는 것이죠.

 

이러한 공간을 각각 Node(노드)라고 부릅니다.

 

 

 


 

 

 

 

Linked List를 구조체로 구현을 해 봅시다.

 

LinkedList.h 파일에 구조체와 함수를 선언할 것이고

LinkedList.cpp 파일에 함수를 정의할 것입니다.

 

 

LinkedList.h 파일에

 

두 개의 구조체를 선언하였습니다.

 

 

먼저 구조체 _tagList를 살펴 보죠.

 

List 입장에서 몇 개의 Node가 존재하는지

파악하기 위해 iCount라는 변수를 멤버로 두었습니다.

 

그리고 List는 모든 Node는 이어져 있기 때문에 

Node가 몇 개가 있든 첫 번째 Node의 주솟값을

알고 있으면 됩니다. 이를 위해 첫 번째 노드의 주솟값을

저장하기 위한 tNode형 포인터 변수 pHeadNode를 멤버로 두었습니다.

 

가변 배열과 다르게 연결형 리스트는 동적 할당하고

있는 공간이 하나이고 필요할 때마다 하나씩 늘리는 방식이므로

동적 할당한 공간의 최대 개수를 저장하는  iMaxCount라는 

변수를 따로 만들 필요는 없습니다.

 

 

다음은 구조체 _tagNode입니다.

 

이는 Node 역할을 해 줄 구조체로

실질적으로 데이터를 저장하고 있기에 iData라는

변수를 멤버로 두었습니다. 그리고 자신과 형태가 같은

다음 노드의 주솟값을 저장하고 있어야 하므로 

pNextNode라는 tNode형 포인터 변수를 멤버로 두고 있습니다.

 

 

 

강의 출처 : https://www.youtube.com/watch?v=PFc4g8mxOiI&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&pp=iAQB

 


 

'C++ > 기초' 카테고리의 다른 글

C++ 기초 : 함수 포인터  (0) 2024.04.08
C++ 기초 : 버블 정렬  (0) 2024.04.07
C++ 기초 : 가변 배열 (3)  (0) 2024.04.07
C++ 기초 : 가변 배열 (2)  (0) 2024.04.06
C++ 기초 : 가변 배열 (1)  (0) 2024.04.06