两个队列实现一个栈和两个栈实现一个队列

两个队列实现一个栈

入栈时,直接push入queue1中

出栈时,先将queue1中的元素除最后一个元素外依次pop出队列,并push入队列queue2中,将留在queue1中的最后一个元素出队列即为出栈元素,最后还要把queue2中的元素再次push进queue1中

具体代码如下:

template <typename T>
class DouQue_Stack
{
public:
	DouQue_Stack()
	{}
	~DouQue_Stack()
	{}
	void Stack_push(const T& node)
	{
		queue1.push(node);
	}
	void Stack_pop()
	{
		if (!queue2.empty())
		{
			queue2.pop();
		}
		if (!queue1.empty())
		{
			int i = queue1.size();
			while (i > 1)
			{
				queue2.push(queue1.front());
				queue1.pop();
				i--;
			}
			queue1.pop();
			int ii = queue2.size();
			while (ii > 0)
			{
				queue1.push(queue2.front());
				queue2.pop();
				ii--;
			}
		}
		
	}

	T Stack_top()
	{
		T node1;
		if (!queue2.empty())
		{
			node1 = queue2.front();
			return node1;
		}
		if (!queue1.empty())
		{
			int i = queue1.size();
			while (i > 1)
			{
				queue2.push(queue1.front());
				queue1.pop();
				i--;
			}
			node1 = queue1.front();
			queue2.push(queue1.front());
			queue1.pop();
			int ii = queue2.size();
			while (ii > 0)
			{
				queue1.push(queue2.front());
				queue2.pop();
				ii--;
			}
			return node1;
		}
	}
private:
	queue<T> queue1;
	queue<T> queue2;
};

两个栈实现一个队列

入队时,直接push入stack1中

出队时,判断stack2是否为空,如果stack2为空,则将stack1中的元素倒入stack2中然后pop出stack2,否则直接pop出stack2中的元素

具体代码如下:

template <typename T>
class DouSta_Queue
{
public:
	DouSta_Queue()
	{}
	~DouSta_Queue()
	{}
	void Queue_push(const T& node)
	{
		stack1.push(node);
	}
	void Queue_pop()
	{
		if (!stack2.empty())
		{
			stack2.pop();
		}
		if (!stack1.empty())
		{
			int i = stack1.size();
			while (i > 0)
			{
				stack2.push(stack1.top());
				stack1.pop();
				i--;
			}
			stack2.pop();
		}

	}

	T Queue_top()
	{
		T node1;
		if (!stack2.empty())
		{
			node1 = stack2.top();
			return node1;
		}
		if (!stack1.empty())
		{
			int i = stack1.size();
			while (i > 0)
			{
				stack2.push(stack1.top());
				stack1.pop();
				i--;
			}
			node1 = stack2.top();
			return node1;
		}
	}
private:
	stack<T> stack1;
	stack<T> stack2;
};

猜你喜欢

转载自blog.csdn.net/L_jiahao/article/details/86364165
今日推荐