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

110  void Terminate(List *list)
                     111  {
                     112    Clear(list);    /* 모든 노드를 삭제 */
                     113    free(list->n);
                     114  }



                   앞에서 살펴본 09-2절의 ‘포인터로 연결 리스트 만들기’ 프로그램은 calloc 함수를 사용한
                   메모리 영역 확보에 실패한 경우에 대한 처리를 하지 않습니다. 이번 9-3절의 ‘커서로 연결

                   리스트 만들기’ 프로그램도 마찬가지로 배열의 크기를 넘어 노드를 추가하는 경우에 대한 처
                   리를 하지 않았습니다.



                   배열의 비어 있는 요소 처리하기
                   실습 9-5에서 작성한 프로그램의 각 함수는 09-2절에서 작성한 포인터로 연결 리스트 만들
                   기 프로그램(실습 9-1, 9-2)과 일대일로 대응합니다. 이때 발생할 수 있는 가장 중요한 문제인
                   ‘삭제한 노드 관리’로 관심을 옮겨 조금 더 자세히 살펴보겠습니다. 그러면 그림 9-15를 통해

                   노드의 삽입과 삭제에 대해 알아보겠습니다.

                          head
                    a                                          head  1  0  C   2
                                                                       1   A   3
                         1       3      0      2                       2   D   -1
                           A      B       C      D                     ❸   B   0
                                                                       4   -   -
                                                                       5   -   -



                         head
                    b                                          head  4  0  C   2
                                                                       1   A   3
                         4       1      3       0      2               2   D   -1
                           E      A       B      C       D             3   B   0
                                                                       ❹   E   -
                                                                       5   -   -
                         노드 E를 삽입합니다.


                         head
                    c                                          head  4  0  C   2
                                                                       1   A   3
                         4       1      3       0      2               2   D   -1
                           E      A       B      C      D              3   -   -
                                                                       ❹   E   1
                                        노드 B를 삭제합니다.                   5   -    -
                                                               빈 배열 상태가 됩니다.
                                     [그림 9-15] 연결 리스트에서 노드의 삽입과 삭제




                   372   C 알고리즘
   367   368   369   370   371   372   373   374   375   376   377