-
데이터 삭제 메서드 구현
데이터 삭제 연산에 필요한 메서드들을 구현한다.
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; }