본문 바로가기
개발/C++

큐를 이용하여 스택만들기

by MNMNMNMN 2020. 12. 8.
728x90
template <typename T>
class QueueToStack
{
	queue<T> inQueue;
	queue<T> outQueue;
	public:

	void Push(T data)
	{
		inQueue.push(data);
	}
	T Pop()
	{
		if (IsEmpty())
			return 0;
		while (inQueue.size() > 1)
		{
			T temp = inQueue.front();
			inQueue.pop();
			outQueue.push(temp);
		}

		T data = inQueue.front();
		inQueue.pop();
		while (!outQueue.empty())
		{
			T temp = outQueue.front();
			outQueue.pop();
			inQueue.push(temp);
		}		
		return data;
	}
	bool IsEmpty()
	{
		return inQueue.empty()&& outQueue.empty();
	}
};

1. 데이터를 담을 큐를 선언합니다.

2. 데이터를 뱉을 큐를 선언합니다.

3. 데이터를 쌓습니다.

4. 데이터를 뱉을때에는 받은 데이터의 마지막 이전 데이터 까지 뱉을 큐에 담습니다.

5. 마지막 데이터는 반환할 준비를 합니다.

6. 뱉을 큐에서 다시 담을 큐로 모든 데이터를 차례대로 이동시킵니다.

7. 반환준비가 된 마지막 데이터를 반환합니다.

728x90
반응형

'개발 > C++' 카테고리의 다른 글

스택을 이용하여 큐 만들기  (0) 2020.12.08
C++ 연산자의 우선순위표  (0) 2020.11.19

댓글