해결된 질문
작성
·
205
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);
}