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

16    }
                     17  }
                     18
                     19  /*--- 지정된 레코드를 삭제 리스트에 등록 ---*/
                     20  static void DeleteIndex (List *list, Index idx)
                     21  {
                     22    if(list->deleted == Null) {    /* 삭제할 레코드가 없는 경우 */
                     23      list->deleted = idx;
                     24      list->n[idx].Dnext = Null;
                     25    }
                     26    else {
                     27      Index ptr = list->deleted;
                     28      list->deleted = idx;
                     29      list->n[idx].Dnext = ptr;
                     30    }
                     31  }
                     32
                     33  /*--- n이 가리키는 노드의 각 멤버에 값을 설정 ----*/
                     34  static void SetNode(Node *n, const Member *x, Index next)
                     35  {
                     36    n->data = *x;             /* 데이터 */
                     37    n->next = next;            /* 다음 노드에 대한 포인터 */
                     38  }
                     39
                     40  /*--- 연결 리스트를 초기화 ---*/
                     41  void Initialize(List *list, int size)
                     42  {
                     43    list->n = calloc(size, sizeof(Node));
                     44    list->head = Null;         /* 머리 노드 */
                     45    list->crnt = Null;         /* 선택한 노드 */
                     46    list->max = Null;
                     47    list->deleted = Null;
                     48  }
                     49
                     50  /*--- compare 함수로 x와 일치하는 노드 검색 ---*/
                     51  Index search (List *list, const Member *x, int compare(const Member *x, const Member *y))
                     52  {
                     53    Index ptr = list->head;
                     54    while(ptr != Null) {
                     55      if(compare(&list->n[ptr].data, x) == 0) {





                   368   C 알고리즘
   363   364   365   366   367   368   369   370   371   372   373