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

num

                   집합의 원소 개수입니다. 집합의 원소는 배열의 앞쪽부터 0 ~ num - 1까지 넣습니다. 즉,
                   set[0] ~ set[num – 1]의 num개 요소가 집합의 원소입니다. 이 그림의 경우 num의 값은 4입
                   니다.
                      배열이 공집합이면 num의 값은 0입니다.


                   set
                   집합을 넣는 배열의 포인터입니다.

                      배열의 메모리 공간은 Initialize 함수로 확보합니다.

                   이 구조체로 관리하는 int형 집합 프로그램의 헤더는 실습 7-1에, 소스는 실습 7-2에 나타냈습

                   니다.

                      실습 7-1                                                  •완성 파일 chap07/IntSet.h

                     01  /* int형 집합 IntSet(헤더) */
                     02  #ifndef ___IntSet
                     03  #define ___IntSet
                     04
                     05  /*--- int형 집합을 관리하는 구조체 ---*/
                     06  typedef struct {
                     07    int max;    /* 집합의 크기 */
                     08    int num;    /* 집합의 원소 개수 */
                     09    int *set;   /* 집합 본체의 배열(의 첫 번째 요소에 대한 포인터) */
                     10  } IntSet;
                     11
                     12  /*--- 집합 초기화 ---*/
                     13  int Initialize(IntSet *s, int max);
                     14
                     15  /*--- 집합 s에 n이 들어 있는지 확인 ---*/
                     16  int IsMember(const IntSet *s, int n);
                     17
                     18  /*--- 집합 s에 n을 추가 ---*/
                     19  void Add(IntSet *s, int n);
                     20
                     21  /*--- 집합 s에서 n을 삭제 ---*/
                     22  void Remove(IntSet *s, int n);
                     23
                     24  /*--- 집합 s에 넣을 수 있는 최대의 원소 개수를 반환 ---*/
                     25  int Capacity(const IntSet *s);
                     26

                   278   C 알고리즘
   273   274   275   276   277   278   279   280   281   282   283