Page 350 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 350
a 삽입 전 head
ptr
A B C D E F
4
삽입 전
삽입 후
b 삽입 후 head
ptr
A B C D E F G
삽입한 다음에는 꼬리 노드를 가리킵니다. 5 NULL
[그림 9-9] 꼬리 노드를 삽입하는 과정
머리 노드를 삭제하는 RemoveFront 함수
RemoveFront 함수는 머리 노드를 삭제하는 함수입니다. 리스트가 비어 있지 않은 경우(list->
head != NULL)에만 삭제를 실행합니다. 그림 9-10을 통해 삭제하는 과정을 자세히 살펴보겠
습니다. a 의 리스트에서 머리 노드 A를 삭제하고 나면 b 상태가 됩니다. 머리 노드에 대한
포인터 list->head에 두 번째 노드 B에 대한 포인터 list->head->next를 대입하여
list->head가 가리키는 노드를 B로 업데이트합니다. 그리고 삭제하기 전의 머리 노드 A의 메
모리 영역을 해제합니다.
선택한 노드 crnt가 가리키는 노드도 B로 업데이트합니다.
a 삭제 전 head
A B C D E F
삭제 전
b 삭제 후 head 삭제하기 전에 머리 노드 A가 가리켰던 노드 B를 가리킵니다. 삭제 후
A B C D E F
해제합니다.
[그림 9-10] 머리 노드를 삭제하는 과정
만약 리스트에 노드가 1개만 있어도 오류 없이 삭제할 수 있습니다. 삭제하기 전의 머리 노드
는 꼬리 노드이기 때문에 다음 노드를 가리키는 list->head->next의 값은 널입니다. 널을
list->head에 대입하면 리스트는 빈 상태가 됩니다.
350 C 알고리즘