ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조...55
    일지 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;
    }

     

    댓글

Designed by Tistory.