일지

자료구조...13

niamdank 2020. 10. 10. 11:32

생성자 구현

기본 생성자와 SinglyLinkedList를 인자로 받는 복사 생성자를 구현한다.

 

SinglyLinkedList.cpp

/// <summary>
/// 비어있는 SinglyLinkedList를 생성한다.
/// </summary>
SinglyLinkedList::SinglyLinkedList()
	: m_count(0), m_head(nullptr)
{
}

/// <summary>
/// 다른 SinglyLinkedList가 가지고 있는 노드를 복사해 SinglyLinkedList를 생성한다.
/// </summary>
/// <param name="other">기준이 될 SinglyLinkedList</param>
SinglyLinkedList::SinglyLinkedList(const SinglyLinkedList& other)
	: m_count(other.m_count)
{
	SinglyLinkedListNode* prevNode = nullptr;
	SinglyLinkedListNode* curNode = other.m_head;
	while (curNode != nullptr)
	{
		SinglyLinkedListNode newNode;
		newNode.m_data = curNode->m_data;
		newNode.m_next = prevNode;
		prevNode = &newNode;
	}
	m_head = prevNode;
}

/// <summary>
/// 메모리 누수를 막기 위해 동적 생성한 노드들을 제거한다.
/// </summary>
SinglyLinkedList::~SinglyLinkedList()
{
	while (m_head != nullptr)
	{
		SinglyLinkedListNode* curNode = m_head;
		m_head = m_head->m_next;
		delete curNode;
	}
}