본문 바로가기

PL/C & C++

[C] 연결 리스트 구조체 만들고 사용하기

NODE 구조체에서 가장 중요한 부분은 struct NODE *next;입니다. 얼핏 보면 구조체 자기 자신의 포인터를 멤버로 가지고 있는데 전혀 어렵지 않습니다. next에는 NODE 구조체로 만든 다른 노드의 메모리 주소를 저장합니다. 즉, 자기 자신이 아닌 다른 노드의 메모리 주소를 저장한다는 점을 기억하세요.

NODE 구조체에서 데이터는 int형 하나만 저장했습니다. 실제로 사용할 때는 용도에 따라서 다양한 자료형으로 된 멤버 여러 개를 넣으면 됩니다.

 

이제 단일 연결 리스트에서 노드의 종류를 알아보겠습니다. 노드는 역할에 따라서 두 가지로 나뉩니다.

  • 머리 노드(head node): 단일 연결 리스트의 기준점이며 헤드(head)라고도 부릅니다. 머리 노드는 첫 번째 노드를 가리키는 용도이므로 데이터를 저장하지 않습니다.
  • 노드(node): 단일 연결 리스트에서 데이터가 저장되는 실제 노드입니다.

이 두 종류의 노드는 역할만 다를 뿐 모두 NODE 구조체를 사용합니다.

이제 NODE 구조체로 머리 노드를 만든 뒤 노드가 2개인 연결 리스트를 만들어보겠습니다. 그림으로 표현하면 다음과 같이 head → node1 → node2 → NULL과 같은 모양입니다.

 

 

 그림 74‑3 단일 연결 리스트 생성

 

 

 

 

 

 

 

 

C 언어 코딩 도장: 74.1 연결 리스트 구조체 만들고 사용하기

먼저 연결 리스트의 구조체를 정의합니다. 연결 리스트는 노드들의 집합이므로 실제로는 노드의 구조체만 정의하면 됩니다. ▼ 그림 74‑2 노드 구조체 struct NODE { // 연결 리스트의 노드 구조체 s

dojang.io

 

'PL > C & C++' 카테고리의 다른 글

[C++] 참조 사이트  (0) 2021.01.20
[C & C++] macro function, inline function  (0) 2021.01.20
[C++] class와 struct의 차이  (0) 2021.01.13
[C++] -> 와 . 의 차이  (0) 2021.01.12
[C&C++] #include 기본 포함 경로, ""와 <> 차이  (0) 2021.01.12