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 알고리즘