您的位置:首页 > 其它

两个栈实现队列的功能

2014-10-24 10:47 225 查看
////**********两个栈实现队列的功能

其实就是用一个类包含两个栈,其中一个压栈,然后全部弹出到另一个栈,最后就是另一个栈弹出,从而达到先进先出

#include<iostream>

#include<stack>

using namespace std;

class myqueue

{

public:

void push(int t)

{

s1.push(t);

}

int front()

{

if(s2.empty())

{

if(s1.size()==0)cout<<"error";

while(!s1.empty())

{

s2.push(s1.top());

s1.pop();//s1栈少了元素,而s2栈多了个元素

}

}

return s2.top();

}

void pop()

{

/*if(s2.empty())

{

while(!s1.empty())

{

s2.push(s1.top());

s1.pop();

}

if(!s2.empty())

s2.pop();

}

else*/

s2.pop();//这里很重要,因为每次其实都是从s2这个栈里面弹出来的

}

stack<int> s1;

stack<int> s2;

};

int main(void)

{

myqueue mq;

int i;

for(i=1;i<=10;i++)

mq.push(i*10);

for(i=0;i<10;i++)

{

cout<<mq.front()<<endl;

mq.pop();

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: