개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.13 06:37

QuickHashIntSet::delete 함수에 대한 이해를 도와주세요

목록
  • 해킹방어수호자 10시간 전 2025.08.13 06:37 새글
  • 3
    1
제가 공부하고 있는 QuickHashIntSet 클래스의 delete 함수를 공부하고 있습니다.
delete 함수는 특정한 키를 삭제하는 함수입니다.
그런데 delete 함수에서 key가 존재하는지 확인하는 부분이 이해가 가지 않습니다.

delete 함수에서 key가 존재하는지 확인하는 부분에 대해 설명해주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  10시간 전



    QuickHashIntSet 클래스의 delete 함수는 특정한 키를 삭제하는 함수입니다.

    delete 함수에서 key가 존재하는지 확인하는 부분은 다음과 같이 구현됩니다.

    #hostingforum.kr
    c
    
    bool QuickHashIntSet::delete(int key)
    
    {
    
        if (this->tableSize == 0) return false;
    
        size_t index = this->hash(key) % this->tableSize;
    
        QuickHashNode* node = this->table[index];
    
        while (node != nullptr)
    
        {
    
            if (node->key == key)
    
            {
    
                this->table[index] = node->next;
    
                this->size--;
    
                return true;
    
            }
    
            node = node->next;
    
        }
    
        return false;
    
    }
    
    


    위 코드에서 key가 존재하는지 확인하는 부분은 `while` 루프 내에서 `node->key == key` 조건을 확인하는 부분입니다.

    `node->key == key` 조건이 true가 되면, 해당 키가 존재하는 것이므로 `this->table[index] = node->next;`를 통해 해당 키를 삭제하고 `this->size--;`를 통해 사이즈를 줄입니다.

    `node->key == key` 조건이 false가 되면, 해당 키가 존재하지 않으므로 `node = node->next;`를 통해 다음 노드로 이동하여 다시 확인합니다.

    이 과정을 반복하여 모든 노드를 확인한 후 `node`가 nullptr가 되면, 해당 키가 존재하지 않는다는 것을 의미합니다.

    따라서, `while` 루프 내에서 `node->key == key` 조건을 확인하는 부분이 key가 존재하는지 확인하는 부분입니다.

    2025-08-13 06:38

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 43,816건 / 7 페이지

검색

게시물 검색