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

07-2 배열로 집합 만들기









                        같은 자료형이 모인 집합은 배열로 표현할 수 있습니다. 배열로 만든 집합에 대해 좀 더 알아
                        보겠습니다.




                        배열로 집합 만들기
                        모든 원소가 같은 자료형으로 구성된 집합은 배열로 표현할 수 있습니다. 예를 들어 정수로

                        이루어진 {1, 2, 3, 4, 5, 6, 7, 8}은 아래처럼 요소의 개수가 8개인 int형 배열 안에 넣을 수 있
                        습니다.

                                              8   1    4   2    7    6   3    5



                        그런데 배열을   사용하여 집합을 표현하려면 집합의 원소 개수와 배열의 요소 개수는 항상 같
                        아야 합니다. 즉, 집합의 상태를 표현할 데이터가 필요합니다. 따라서 다음과 같이 집합을 표
                        현하는 배열과 이 배열의 정보(집합의 최대 크기, 집합의 원소 개수)를 담은 구조체를 함께 사용해

                        야 합니다. 그림 7-6은 int형을 원소로 갖는 집합을 구조체 IntSet으로 관리하는 모습을 나타
                        낸 것입니다.                                4장에서 학습한 스택, 큐에서 사용한 방법과 같은 방식입니다.


                         typdef struct {                   max    8
                           int max;     /* 집합의 최대 크기 */    num    4
                           int num;     /* 집합의 원소 개수 */    set
                           int *set;    /* 집합  */                  0  52
                         } IntSet;                                 1  63      집합의
                                                                   2  14   num  원소 개수
                                                                   3  22            max  집합의
                                                               num ❹                    크기
                                                                   5
                                                                   6
                                                                   7
                                        [그림 7-6] 배열에 의한 집합을 관리하기 위한 구조체 IntSet


                        구조체 IntSet은 다음과 같은 3개의 멤버로 구성됩니다.



                        max
                        집합의 최대 크기를 나타내는 멤버입니다. 이 그림의 max 값은 8입니다.


                                                                                          07•집합  277
   272   273   274   275   276   277   278   279   280   281   282