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

30    }
                     31  }
                     32
                     33  /*--- 꼬리 노드를 삭제 ---*/
                     34  void RemoveRear (List *list)
                     35  {
                     36    if(list->head != Null) {
                     37      if(list->n[list->head].next == Null)  /* 노드가 1개만 있으면 */
                     38        RemoveFront(list);               /* 머리 노드를 삭제 */
                     39      else {
                     40        Index ptr = list->head;
                     41        Index pre;
                     42        while(list->n[ptr].next != Null) {
                     43          pre = ptr;
                     44          ptr = list->n[ptr].next;
                     45        }
                     46        list->n [pre].next = Null;
                     47        DeleteIndex(list, ptr);
                     48        list->crnt = pre;
                     49      }
                     50    }
                     51  }
                     52
                     53  /*--- 선택한 노드를 삭제 ---*/
                     54  void RemoveCurrent (List *list)
                     55  {
                     56    if(list->head != Null) {
                     57      if(list->crnt == list->head)   /* 머리 노드가 선택되어 있으면 */
                     58        RemoveFront(list);         /* 머리 노드를 삭제 */
                     59      else {
                     60        Index ptr = list->head;
                     61        while(list->n[ptr].next != list->crnt)
                     62          ptr = list->n[ptr].next;
                     63        list->n[ptr].next = list->n[list->crnt].next;
                     64        DeleteIndex(list, list->crnt);
                     65        list->crnt = ptr;
                     66      }
                     67    }
                     68  }
                     69





                   370   C 알고리즘
   365   366   367   368   369   370   371   372   373   374   375