일지
자료구조...55
niamdank
2020. 12. 30. 11:51
원형 큐 삽입 메서드 구현
CircularQueue.cpp
/// <summary>
/// CircularQueue의 끝 부분에 값을 추가한다.
/// </summary>
/// <param name="value">추가할 값</param>
void CircularQueue::Enqueue(int value)
{
if (IsNeedToResize())
{
Resize();
}
m_items[m_front++] = value;
m_count++;
m_front = m_front % (m_capacity + 1);
}
/// <summary>
/// CircularQueue에 count만큼의 값을 삽입할 수 있는지 확인한다.
/// </summary>
/// <returns>삽입 가능 여부</returns>
bool CircularQueue::IsNeedToResize()
{
return m_capacity < m_count + 1;
}
/// <summary>
/// 데이터 삽입 시 공간이 부족한 경우 공간을 2배로 늘려준다.
/// </summary>
void CircularQueue::Resize()
{
int* newItems{ new int[m_capacity * 2]{ 0 } };
for (size_t i = 0; i < m_count; i++)
{
newItems[i] = m_items[m_rear++];
m_rear = m_rear % (m_capacity + 1);
}
m_capacity *= 2;
m_rear = 0;
m_front = m_count;
delete[] m_items;
m_items = newItems;
}
참고문헌