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 알고리즘
   345   346   347   348   349   350   351   352   353   354   355