ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조...32
    일지 2020. 11. 10. 20:22

    기능 메서드 구현

    자료구조를 효율적으로 사용하기 위한 기능 메서드를 구현한다.

     

    DoublyCircularLinkedList.cpp

    /// <summary>
    /// 지정한 값을 포함한 노드가 존재하는지 확인한다.
    /// </summary>
    /// <param name="value">찾을 값</param>
    /// <returns>값의 존재 여부</returns>
    bool DoublyCircularLinkedList::Contains(int value)
    {
    	if (m_head != nullptr)
    	{
    		DoublyCircularLinkedListNode* curNode{ m_head };
    		do
    		{
    			if (curNode->m_data == value)
    			{
    				return true;
    			}
    			curNode = curNode->m_next;
    		} while (curNode != m_head);
    	}
    	return false;
    }
    
    /// <summary>
    /// 지정한 노드가 DoublyCircularLinkedList에 포함되는지 확인한다.
    /// </summary>
    /// <param name="node">찾을 노드</param>
    /// <returns>노드의 포함 여부</returns>
    bool DoublyCircularLinkedList::Contains(const DoublyCircularLinkedListNode* node)
    {
    	if (m_head != nullptr)
    	{
    		DoublyCircularLinkedListNode* curNode{ m_head };
    		do
    		{
    			if (curNode == node)
    			{
    				return true;
    			}
    			curNode = curNode->m_next;
    		} while (curNode != m_head);
    	}
    	return false;
    }
    
    /// <summary>
    /// 지정한 값을 포함하는 가장 처음 일치하는 노드를 반환한다.
    /// </summary>
    /// <param name="value">찾을 값</param>
    /// <returns>지정한 값을 포함하는 노드(없는 경우: nullptr)</returns>
    DoublyCircularLinkedListNode* DoublyCircularLinkedList::Find(int value)
    {
    	if (m_head != nullptr)
    	{
    		DoublyCircularLinkedListNode* curNode{ m_head };
    		do
    		{
    			if (curNode->m_data == value)
    			{
    				return curNode;
    			}
    			curNode = curNode->m_next;
    		} while (curNode != m_head);
    	}
    	return nullptr;
    }
    
    /// <summary>
    /// 지정한 값을 포함하는 가장 마지막 일치하는 노드를 반환한다.
    /// </summary>
    /// <param name="value">찾을 값</param>
    /// <returns>지정한 값을 포함하는 노드(없는 경우: nullptr)</returns>
    DoublyCircularLinkedListNode* DoublyCircularLinkedList::FindLast(int value)
    {
    	if (m_tail != nullptr)
    	{
    		DoublyCircularLinkedListNode* curNode{ m_tail };
    		do
    		{
    			if (curNode->m_data == value)
    			{
    				return curNode;
    			}
    			curNode = curNode->m_prev;
    		} while (curNode != m_tail);
    	}
    	return nullptr;
    }

    댓글

Designed by Tistory.