Page 381 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 381
머리 노드인지 판단하는 방법
Node *형 변수 p가 리스트에 있는 어떤 노드를 가리키는 경우 p가 가리키고 있는 노드가 원
형 리스트의 머리 노드인지 판단하려면 다음 식을 사용합니다.
p == list->head /* p가 가리키는 노드가 머리 노드인지 확인합니다. */
꼬리 노드인지 판단하는 방법
Node *형 변수 p가 리스트에 있는 어떤 노드를 가리키는 경우 p가 가리키고 있는 노드가 원
형 리스트의 꼬리 노드인지 판단하려면 다음 식을 사용합니다.
p->next == list->head /* p가 가리키는 노드가 꼬리 노드인지 확인합니다. */
이중 연결 리스트
선형 리스트의 가장 큰 단점은 다음 노드는 찾기 쉽지만 앞쪽의 노드는 찾을 수 없다는 점입니
다. 이 단점을 개선한 자료구조가 이중 연결 리스트(doubly linked list)입니다. 그림 9-18처럼
각 노드에는 다음 노드에 대한 포인터와 앞쪽의 노드에 대한 포인터가 주어집니다.
이중 연결 리스트는 양방향 리스트라고도 합니다.
head 앞쪽 노드를 가리킵니다.
NULL
A B C D E F
NULL
다음 노드를 가리킵니다.
[그림 9-18] 이중 연결 리스트
이중 연결 리스트의 노드는 그림 9-19처럼 3개의 멤버가 있는 구조체를 사용합니다.
09•리스트 381