-
원형 큐 삽입 메서드 구현
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; }
참고문헌참고문헌