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