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

스택을 이용하여 큐 만들기

by MNMNMNMN 2020. 12. 8.
728x90
template<typename T>
class StackToQueue
{
	stack<T> inStack;
	stack<T> outStack;

public:
	void Enqueue(T data)
	{
		inStack.push(data);
	}
	T Dequeue()
	{
		if (isEmpty())
			return 0;
		T data;
		while (!inStack.empty())
		{
			data = inStack.top();
			inStack.pop();
			outStack.push(data);
		}
		data = outStack.top();
		outStack.pop();

		while (!outStack.empty())
		{
			T temp = outStack.top();
			outStack.pop();
			inStack.push(temp);
		}

		return data;

	}
	bool isEmpty()
	{
		return inStack.empty()&& outStack.empty();
	}
};

1. 데이터를 담을 스택 'inStack'을 선언

2. 데이터를 뱉을 스택 'outStack'을 선언

3. 데이터를 담을때는 'inStack'에 데이터를 입력

4. 데이터를 뱉을때는 'inStack'에 있는 데이터를 'outStack'으로 이동

5. 'outStack'에 있는 데이터를 한개 꺼내 지역변수에 저장

6. 'outStack'에 남은 데이터를 다시 'inStack'에 이동

7. 지역변수에 저장한 데이터를 반환

728x90
반응형

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

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

댓글