Page 300 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 300
18 }
19
20 int main (void)
21 {
22 BitSet s1 = BitSetNull;
23 BitSet s2 = BitSetNull;
24 while(1) {
25 int m, x, idx;
26
27 printf("s1 = "); PrintLn(s1);
28 printf("s2 = "); PrintLn(s2);
29 printf("(1)s1에 추가 (2)s1에서 삭제 (3)s1에서 검색 (4)s1←s2 (5)여러 연산\n"
30 "(6)s2에 추가 (7)s2에서 삭제 (8)s2에서 검색 (9)s2←s1 (0)종료 : ");
31 scanf("%d", &m);
32
33 if(m == 0) break;
34 switch(m) {
35 case 1: x = scan_data(ADD); Add(&s1, x); break; /* 추가 */
36 case 2: x = scan_data(RMV); Remove(&s1, x); break; /* 삭제 */
37 case 3: x = scan_data(SCH); idx = IsMember(s1, x); /* 검색 */
38 printf("s1에 들어 있%s.\n", idx != 0 ? "습니다" : "지 않습니다"); break;
39 case 4: s1 = s2; break; /* s2를 s1에 대입 */
40 case 5: printf("s1 == s2 = %s\n", s1 == s2 ? "true" : "false");
41 printf("s1 & s2 = "); PrintLn(s1 & s2);
42 printf("s1 | s2 = "); PrintLn(s1 | s2);
43 printf("s1 - s2 = "); PrintLn(s1 & ~s2);
44 break;
45 case 6: x = scan_data(ADD); Add(&s2, x); break; /* 추가 */
46 case 7: x = scan_data(RMV); Remove(&s2, x); break; /* 삭제 */
47 case 8: x = scan_data(SCH); idx = IsMember(s2, x); /* 검색 */
48 printf("s2에 들어 있%s.\n", idx != 0 ? "습니다" : "지 않습니다"); break;
49 case 9: s2 = s1; break; /* s1을 s2에 대입 */
50 }
51 }
52
53 return 0;
54 }
300 C 알고리즘