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

머리 노드인지 판단하는 방법

                        자료형이 Node *형인 변수 p는 리스트의 노드 중 하나를 가리킵니다. 변수 p가 가리키는
                        노드가 연결 리스트의 머리 노드인지 판단하는 방법은 다음과 같습니다.


                         p == list->head    /* p가 가리키는 노드가 머리 노드인지 확인합니다. */



                        꼬리 노드인지 판단하는 방법
                        자료형이 Node *형인 변수 p는 리스트의 노드 중 하나를 가리킵니다. 변수 p가 가리키는 노
                        드가 연결 리스트의 꼬리 노드인지 판단하는 방법은 다음과 같습니다.



                         p->next == NULL    /* p가 가리키는 노드가 꼬리 노드인지 확인합니다. */




                        검색을 수행하는 Search 함수

                        Search 함수는 어떤 조건을 만족하는 노드를 검색합니다. 반환하는 값은 찾은 노드에 대한
                        포인터입니다. 만약 검색에 실패하면 널을 반환합니다. 검색에 사용하는 알고리즘은 선형 검
                        색이고 검색할 노드를 만날 때까지 머리 노드부터 스캔합니다.


                                         리스트의 노드를 순서대로
                        head             스캔합니다.
                            ①
                                 ②      ③       ④
                             A       B      C      D       E      F


                              [그림 9-6] 연결 리스트에서 노드 D를 선형 검색하는 과정


                        노드 스캔은 아래의 조건 중 하나만 성립하면 종료됩니다.


                         조건 1. 검색 조건을 만족하는 노드를 찾지 못하고 꼬리 노드를 지나가기 직전인 경우
                         조건 2. 검색 조건을 만족하는 노드를 찾은 경우



                        그런데 이 함수가 전달받는 매개변수는 다음과 같습니다.











                                                                                         09•리스트  345
   340   341   342   343   344   345   346   347   348   349   350