Page 344 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 344
a 노드 0개 b 노드 1개 c 노드 2개
head head head
NULL
A A B
현재 아무런 노드도
가리키고 있지 않습니다. head->next head->next head->next->next
[그림 9-5] 연결 리스트와 노드 개수에 따른 상태
그러면 그림을 보면서 연결 리스트를 좀 더 자세히 살펴보겠습니다.
연결 리스트가 비어 있는지 판단하는 방법
a 는 노드가 하나도 없는 상태입니다(빈 연결 리스트). 이때 리스트가 비어 있는지 판단하는 방
법은 다음과 같습니다.
list->head == NULL /* 연결 리스트가 비어 있는지 확인합니다. */
노드가 1개인 연결 리스트를 판단하는 방법
b 는 연결 리스트에 노드가 1개만 있는 상태입니다. 변수 list->head가 가리키는 노드는 머
리 노드 A입니다. 이때 연결 리스트에는 1개의 노드만 있기 때문에 머리 노드 A는 리스트의
꼬리 노드이기도 합니다. 따라서 next의 값은 널입니다. list->head가 가리키는 노드 안의 뒤
쪽 포인터 next 값이 널이므로 연결 리스트의 노드가 1개인지 판단하는 방법은 다음과 같습
니다.
list->head->next == NULL /* 노드가 1개인지 확인합니다. */
노드가 2개인 연결 리스트를 판단하는 방법
c 는 노드가 2개 있는 상태입니다. 머리 노드는 A, 꼬리 노드는 B입니다. 이때 list->head가
가리키는 노드 A의 next는 노드 B를 가리킵니다. 꼬리 노드 B의 next는 널 값을 가지고 있기
때문에 연결 리스트의 노드가 2개인지 판단하는 방법은 다음과 같습니다.
list->head->next->next == NULL /* 노드가 2개인지 확인합니다. */
노드 A의 데이터는 list->head->data이고 노드 B의 데이터는 list->head->next->data
입니다.
344 C 알고리즘