兩個棧實現一個隊列


/**
* 兩個棧實現一個隊列
* 棧IN用做入列,棧OUT用做出列
* push:
* 棧IN執行push操作
* pop:
* 如果棧OUT不為空,執行pop操作
* 如果棧OUT為空,將棧IN所有元素依次pop並push到棧OUT。
*/

#include
<stack>
#include
<iostream>
using namespace std;

template
<typename TYPE>
class Queue
{
public:
void push(const TYPE& a_data)
{
IN.push(a_data);
}

TYPE front()
{
if (!OUT.empty())
{
return OUT.top();
}
else
{
while (!IN.empty())
{
OUT.push(IN.top());
IN.pop();
}
return OUT.top();
}
}

void pop()
{
if (!OUT.empty())
{
OUT.pop();
}
else
{
while (!IN.empty())
{
OUT.push(IN.top());
IN.pop();
}
OUT.pop();
}
}

private:
stack
<TYPE> IN;
stack
<TYPE> OUT;
};

int main()
{
Queue
<int> myQueue;
for (int i=0; i<10; i++)
{
myQueue.push(i);
}
for (int i=0; i<10; i++)
{
cout
<< myQueue.front() << endl;
myQueue.pop();
}
return 0;
}

image


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com