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

a  삽입 전  head

                                  A      B       C      D      E       F



                                                                             삽입 전
                    b  삽입 후  head          삽입된 노드 G를 가리킵니다.
                                                                             삽입 후
                                      G
                                               삽입 전의 머리 노드를 가리킵니다.
                                  A      B      C       D      E       F
                                  ptr

                                        [그림 9-8] 머리에 노드를 삽입하는 과정


                   처리 과정은 다음과 같습니다.


                    1  삽입 전의 머리 노드 A에 대한 포인터를 ptr에 대입합니다.



                    2  삽입할 노드 G를 AllocNode 함수로 만들고 만든 노드 G를 가리키도록 list->head를
                   업데이트합니다.

                       list->crnt도 새로 만든 노드를 가리키도록 업데이트합니다.


                    3  SetNode 함수를 호출하여 값을 설정합니다. 이때 삽입한 다음 머리 노드의 다음을
                   가리키는 포인터의 값을 ptr(삽입하기 전의 머리 노드)로 업데이트합니다.
                       실습 9-2[C]의 과정에서 붙인 번호를 그대로 사용했습니다.


                   꼬리에 노드를 삽입하는 InsertRear 함수
                   InsertRear 함수는 연결 리스트 꼬리에 노드를 삽입하는 함수입니다. 리스트가 비어 있는지
                   아닌지 먼저 확인(list->head == NULL)하고 경우에 따라 다음의 작업을 수행합니다.



                     1.   리스트가 비어 있는 경우
                       머리에 노드를 삽입하는 처리와 같습니다. InsertFront 함수로 처리합니다.
                     2.   리스트가 비어 있지 않은 경우
                       리스트 꼬리에 노드 G를 삽입합니다.












                   348   C 알고리즘
   343   344   345   346   347   348   349   350   351   352   353