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
   284   285   286   287   288   289   290   291   292   293   294