用两个栈实现队列(c++实现)

使用两个栈,实现队列的基本功能:push、pop、判断队列是否为空等,实现的代码如下:

#include<iostream>
#include<stack>
#include<ctime>//计算代码所需要的时间
using namespace std;

class MyQueue
{
public:
	stack<int> staIn;
	stack<int> staOut;

	//判断队列是否为空
	bool empty()
	{
		return staIn.empty() && staOut.empty();
	}

	//将数据放进队列
	void push(int x)
	{
		staIn.push(x);
	}

	//将数据从队列中移出
	int pop()
	{
		if (staOut.empty())
		{
			while(!staIn.empty())
			{
				staOut.push(staIn.top());
				staIn.pop();
			}
		}
		int result = staOut.top();
		staOut.pop();
		return result;
	}

	//获取队列的第一个元素
	int peek()
	{
		int result = this->pop();
		staOut.push(result);
		return result;
	}
};

int main()
{
	clock_t starttime, endtime;
	starttime = clock();//计时开始
	MyQueue myqueue;
	for (int i = 1; i < 4; i++)
	{
		myqueue.push(i);
	}
	cout << "队列的第一个数据为:" <<myqueue.peek()<< endl;
	endtime = clock();//计时结束
	cout << "运行时间为: " << (double)(endtime - starttime) / CLOCKS_PER_SEC << "s" << endl;
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值