用两个栈实现队列

两个栈,一个称之为主栈,另外一个次栈。

在主栈直接进行Push操作。

次栈辅助进行Pop和Front操作。

栈直接使用STL中的Stack。


源代码:

NewQueue.h

#include <stack>

class NewQueue
{
public:
	void Push(int data);
	void Pop();
	int Front();
	int Back();
	bool Empty();

private:
	std::stack<int> m_stack1; // 主栈
	std::stack<int> m_stack2; // 从栈
}

NewQueue.cpp

#include "NewQueue.h"

void NewQueue::Push(int data)
{
	m_stack1.push(data);
}

void NewQueue::Pop()
{
	// 将主栈中数据全部放入次栈
	while (!m_stack1.empty())
	{
		m_stack2.push(m_stack1.top());
		m_stack1.pop();
	}

	m_stack2.pop();

	// 将数据从次栈中还原到到主栈
	while (!m_stack2.empty())
	{
		m_stack1.push(m_stack1.top());
		m_stack2.pop();
	}
}

int NewQueue::Front()
{
	// 将主栈中数据全部放入次栈
	while (!m_stack1.empty())
	{
		m_stack2.push(m_stack1.top());
		m_stack1.pop();
	}

	int data = m_stack2.top();

	// 将数据从次栈中还原到到主栈
	while (!m_stack2.empty())
	{
		m_stack1.push(m_stack2.top());
		m_stack2.pop();
	}

	return data;
}

int NewQueue::Back()
{
	return m_stack1.top();
}

bool NewQueue::Empty()
{
	return m_stack1.empty();
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值