使用两个栈,实现队列的基本功能: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;
}