ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조...15
    일지 2020. 10. 13. 09:12

    데이터 삭제 메서드 구현

    데이터 삭제 연산에 필요한 메서드들을 구현한다.

     

    SinglyLinkedList.cpp

    /// <summary>
    /// SinglyLinkedList에서 가장 처음 일치한 지정된 값을 포함한 노드를 제거한다.
    /// </summary>
    /// <param name="value">제거할 값</param>
    bool SinglyLinkedList::Remove(int value)
    {
    	SinglyLinkedListNode* prevNode = nullptr;
    	SinglyLinkedListNode* curNode = m_head;
    	while (curNode != nullptr)
    	{
    		if (curNode->m_data == value)
    		{
    			break;
    		}
    		prevNode = curNode;
    		curNode = curNode->m_next;
    	}
    
    	if (curNode == nullptr)
    	{
    		return false;
    	}
    
    	if (prevNode == nullptr)
    	{
    		m_head = curNode->m_next;
    	}
    	else
    	{
    		prevNode->m_next = curNode->m_next;
    	}
    	PushNode(curNode);
    
    	m_count--;
    	return true;
    }
    
    /// <summary>
    /// SinglyLinkedList에서 지정된 노드를 제거한다.
    /// </summary>
    /// <param name="node">제거할 노드</param>
    void SinglyLinkedList::Remove(const SinglyLinkedListNode* node)
    {
    	Remove(node->m_data);
    }
    
    /// <summary>
    /// SinglyLinkedList의 모든 노드를 제거한다.
    /// </summary>
    void SinglyLinkedList::Clear()
    {
    	while (m_head != nullptr)
    	{
    		SinglyLinkedListNode* curNode = m_head;
    		m_head = m_head->m_next;
    		PushNode(curNode);
    	}
    	m_count = 0;
    }

    댓글

Designed by Tistory.