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

원소가 들어 있는지 확인하는 IsMember 함수

                        IsMember 함수는 배열 set에 n이라는 값을 가진 원소가 들어 있는지 확인하는 함수입니다.


                        배열을 처음부터 스캔해 검색에 성공하면 찾은 요소의 인덱스를 반환하고, 실패하면 –1을 반
                        환합니다. 이 그림의 경우 검색에 성공하여 4를 반환합니다.

                           3-2절에서 배운 선형 검색을 사용합니다.


                         93을 검색
                                                0   1   2    3   ❹    5   6    7   8    9
                         IsMember(&s, 93);     52   63   14   22   93   64   25   -   -   -
                                                               일치함
                                                     [그림 7-7] 검색



                        원소를 추가하는 Add 함수
                        Add 함수는 집합에 원소 n을 추가하는 함수입니다. 배열이 비어 있고 집합에 같은 원소 n이
                        들어 있지 않은 경우에만 원소를 추가합니다. 추가하는 과정은 간단히 set[num]에 n을 대입
                        한다음 num을 1만큼 증가시키면 됩니다.


                         75를 추가
                         Add(&s, 75);           0   1   2    3   4    5   6    ❼   8    9
                                               52   63   14   22   93   64   25   -   -   -

                                               52   63   14   22   93   64   25   75   -   -
                                                0   1   2    3   4    5   6    7   ❽    9

                                                     [그림 7-8] 추가


                        원소를 삭제하는 Remove 함수
                        Remove 함수는 집합에서 원소 n을 삭제하는 함수입니다. 삭제는 집합에 n이 들어 있는 경우

                        에만 수행합니다. 그림 7-9는 집합에서 22를 삭제하는 과정을 나타낸 것입니다. 먼저 22가
                        들어 있는 요소의 인덱스 3을 IsMember 함수로 조사하고 반환값을 idx에 대입합니다. 그런
                        다음 num(요소의 개수)을 7에서 1만큼 감소하고 set[6]의 값을 set[3]에 복사하면 됩니다.













                                                                                          07•집합  281
   276   277   278   279   280   281   282   283   284   285   286