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

으로 프리 리스트에 빈 레코드가 등록된 경우에는 ‘새 레코드를 지정하고 max의 값을 증가한

                        다음 해당 레코드에 데이터를 저장’하지 않습니다. 따라서 max의 값은 8이 아니라 7인 상태
                        를 유지합니다.


                                  연결 리스트(원래 데이터의 나열을 관리)
                                                                         head  2  deleted  3
                            head
                        a                                                     0   C   7  -
                                                                              1   -   -  5
                            2       6      0      7       4                   2   A   6  -
                              A      B       C      D      E                  3   -      1
                                                                              4   E   -1 -
                                                                              5   -   -  -1
                               deleted                                        6   B   0  -
                                        3    1     5                          ❼   D   4  -
                                                                              8  -    -  -
                                    프리 리스트(삭제한 레코드를 관리)

                                                                         head  2  deleted  1
                            head
                        b                                                     0   C   7  -
                                                                              1  -    -  5
                            2       6      0      7       4      3            2   A   6  -
                              A      B       C      D      E       F          3   F   -1 -
                                                                              4   E   3  -
                                                               노드 F를 삽입합니다.   5  -    - -1
                               deleted                                        6   B   0  -
                                        1    5                                ❼   D   4  -
                                                                              8  -    - -

                                                                         head  2  deleted  7
                            head
                        c                                                     0   C   4  -
                                                                              1  -    -  5
                            2       6      0      7       4      3            2   A   6  -
                              A      B       C      D      E       F          3   F   -1 -
                                                                              4   E   3  -
                                                  노드 D를 삭제합니다.                5  -    - -1
                               deleted                                        6   B   0  -
                                        7    1     5                          ❼  -    -  1
                                                                              8  -    - -
                                                               커서(다음 노드의 인덱스)next
                                             프리 리스트의 커서(프리 리스트의 다음 노드의 인덱스)dnext

                                       [그림 9-16] 노드의 삽입과 삭제에 따라 프리 리스트가 변화하는 모습


                        c  노드 D를 삭제한 다음의 상태입니다. 7번째 레코드에 넣어둔 데이터를 삭제했기 때문에 7
                        을 프리 리스트의 머리 노드로 추가합니다. 프리 리스트는 7 → 1 → 5의 상태가 됩니다.



                        삭제한 레코드를 프리 리스트에 등록하는 함수의 이름은 DeleteIndex이고 노드를 삽입할 때
                        레코드 번호를 정하는 함수의 이름은 GetIndex입니다. 그림  b 의 경우를 예로 들면 이미 삭제





                                                                                         09•리스트  375
   370   371   372   373   374   375   376   377   378   379   380