-
기능 메서드 구현
자료구조를 효율적으로 사용하기 위한 기능 메서드를 구현한다.
SinglyCircularLinkedList.cpp
/// <summary> /// 지정한 값을 포함한 노드가 존재하는지 확인한다. /// </summary> /// <param name="value">찾을 값</param> /// <returns>값의 존재 여부</returns> bool SinglyCircularLinkedList::Contains(int value) { if (m_head != nullptr) { SinglyCircularLinkedListNode* curNode{ m_head }; do { if (curNode->m_data == value) { return true; } curNode = curNode->m_next; } while (curNode != m_head); } return false; } /// <summary> /// 지정한 노드가 SinglyCircularLinkedList에 포함되는지 확인한다. /// </summary> /// <param name="node">찾을 노드</param> /// <returns>노드의 포함 여부</returns> bool SinglyCircularLinkedList::Contains(const SinglyCircularLinkedListNode* node) { if (m_head != nullptr) { SinglyCircularLinkedListNode* 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> SinglyCircularLinkedListNode* SinglyCircularLinkedList::Find(int value) { if (m_head != nullptr) { SinglyCircularLinkedListNode* 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> SinglyCircularLinkedListNode* SinglyCircularLinkedList::FindLast(int value) { SinglyCircularLinkedListNode* matchNode{ nullptr }; if (m_head != nullptr) { SinglyCircularLinkedListNode* curNode{ m_head }; do { if (curNode->m_data == value) { matchNode = curNode; } curNode = curNode->m_next; } while (curNode != m_head); } return matchNode; }