널널한 개발자 TV의 자료구조 강의 시리즈를 정리할 것이다.
노드(Node)
- 데이터를 담기위한 바구니, 컨테이너 같은 것
보통 연결 리스트 예제를 작성할 때는 메모리를 동적 할당하는 것이 일반적이지만 구조체를 배열로 선언하는 단순한 방법으로 연결 리스트를 생성한다.
이해를 목적으로 만드는 예제이기 때문이다.
#include <stdio.h>
typedef struct NODE
{
// 관리될 데이터
int nData;
// 데이터 관리를 위한 포인터
struct NODE *next;
} NODE;
int main(void)
{
NODE list[5] = { 0, };
// 값 초기화
list[0].nData = 100;
list[1].nData = 200;
list[2].nData = 300;
list[3].nData = 400;
list[4].nData = 500;
// 연결 리스트 구조화
list[0].next = &list[1];
list[1].next = &list[2];
list[2].next = &list[3];
list[3].next = &list[4];
list[4].next = NULL;
for (int i = 0; i < 5; ++i)
printf("list[%d]: %d\n", i, list[i].nData);
printf("\n");
NODE *pTmp = &list[0];
while (pTmp != NULL)
{
printf("%p: %d\n", pTmp, pTmp->nData);
pTmp = pTmp->next;
}
return 0;
}