Page 394 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 394

노드를 삭제하는 Remove 함수

                   Remove 함수는 p가 가리키는 노드를 삭제하는 함수로, 그림 9-28을 보면서 살펴보겠습니
                   다.  a 는 삭제하기 전의 상태입니다. 노드 A(p->prev)와 노드 C(p->next) 사이에 있는 노드 B
                   를 삭제한 다음의 상태는  b 가 되며 삭제하는 과정은 다음과 같습니다.


                    a  삽입 전     p->prev  p    p->next
                                                                     삽입 전
                                 A       B      C
                                                                     삽입 후


                    b  삽입 후
                                 A       B      C


                             [그림 9-28] 원형 이중 연결 리스트에서 노드를 삭제하는 과정



                     1. 노드 A의 뒤쪽 포인터 p->prev->next가 가리키는 노드가 C(p->next)가 되도록 업데이트합니다.
                     2.   노드 C의 앞쪽 포인터 p->next->prev가 가리키는 노드가 A(p->prev)가 되도록 업데이트합니다. 그런
                       다음 p가 가리키는 메모리 영역을 해제합니다.
                     3. 선택한 노드가 삭제한 노드의 앞쪽 노드 A를 가리킬 수 있도록 crnt를 업데이트합니다.



                   머리 노드를 삭제하는 RemoveFront 함수

                   RemoveFront 함수는 머리 노드를 삭제하는 함수로, Remove 함수를 사용해 포인터 list->
                   head->next가 가리키는 머리 노드를 삭제합니다. 이때 더미 노드는 삭제하면 안 됩니다. 따
                   라서 list->head가 가리키는 더미 노드가 아닌 그 다음의 노드 list->head->next를 삭제합

                   니다.


                   꼬리 노드를 삭제하는 RemoveRear 함수

                   RemoveRear 함수는 꼬리 노드를 삭제하는 함수로, 포인터 list->head->prev가 가리키는
                   꼬리 노드를 삭제합니다.


                   선택한 노드를 삭제하는 RemoveCurrent 함수

                   RemoveCurrent 함수는 선택한 노드를 삭제하는 함수로, 포인터 list->crnt가 가리키는 노
                   드를 삭제합니다.









                   394   C 알고리즘
   389   390   391   392   393   394   395   396   397   398   399