• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?

24.03.03 06:51 작성 조회수 116

0

RemoveNode를 직접 먼저 구현한 후 강의를 듣게 되었는데요,
저는 RemoveNode 안에 Search하는 코드를 통합해서 짰는데 SearchToRemove가 RemoveNode를 실행시키기 위해서만 필요하다면 굳이 분리를 해야 할까 하는 의문이 들었습니다.

하나의 함수는 하나의 동작만 실행해야 해서 분리가 된 것일까요? 아니면 SearchToRemove가 나중에도 사용이 될 가능성이 있어서 분리된 것일까요?

제가 작성한 코드를 첨부합니다.


void RemoveNode(const char* pszName)
{
  USERDATA* pTmp = g_pHeadNode;
  USERDATA* previousNode = NULL;
  bool isFound = false;
  // 노드 찾기
  while (pTmp != NULL)
  {
    if (strcmp(pTmp->name, pszName) == 0)
    {
      isFound = true;
      break;
    }
    previousNode = pTmp;
    pTmp = pTmp->pNext;
  }
  // 노드 찾기 실패
  if (isFound == false)
  {
    printf("\"%s\" : Not Found, remove failed.\n", pszName);
    return;
  }
  // 헤드인 경우
  if (g_pHeadNode == pTmp)
  {
    g_pHeadNode = pTmp->pNext;
    free(pTmp);
    printf("\"%s\" : Found, remove successed.\n", pszName);
    return;
  }
  // 헤드가 아닌경우
  previousNode->pNext = pTmp->pNext;
  free(pTmp);
  printf("\"%s\" : Found, remove successed\n", pszName);
}

답변 1

답변을 작성해보세요.

0

코드를 분리한 가장 큰 이유는 UI 코드와 자료구조 코드를 분리하기 위함입니다. 물론 재사용 가능성도 고려한 결과이기도 합니다. 감사합니다. 😄