题目:用两个栈实现一个队列。
#include "iostream"
#include "stack"
using namespace std;
class Myqueue
{
public:
Myqueue(){}
~Myqueue(){}
stack<char> a;
stack<char> b;
void push_back(char ch)
{
a.push(ch);
}
char pop_front()
{
char temp,ch;
if (b.size()<=0)
{
if (a.size()>0)
{
while(a.size()!=0)
{
temp =a.top();
a.pop();
b.push(temp);
}
}
}
ch =b.top();
b.pop();
return ch;
}
};
void main()
{
Myqueue que;
que.push_back('a');
que.push_back('b');
que.push_back('c');
cout<<que.pop_front()<<endl;
cout<<que.pop_front()<<endl;
cout<<que.pop_front()<<endl;
}
2.两个队列实现栈
#include "iostream"
#include "queue"
using namespace std;
class MyStack
{
public:
MyStack(){
}
~MyStack(){}
queue<char> que1;
queue<char> que2;
void push(char ch)
{
if (que1.empty())
{
que2.push(ch);
}
else
{
que1.push(ch);
}
}
void pop()
{
char temp;
if (!que1.empty())
{
while(!que1.empty())
{
temp=que1.front();
que1.pop();
if (que1.empty())
{
break;
}
que2.push(temp);
}
}
else
{
while(!que2.empty())
{
temp=que2.front();
que2.pop();
if (que2.empty())
{
break;
}
que1.push(temp);
}
}
}
char top()
{
char temp;
if (!que1.empty())
{
while(!que1.empty())
{
temp=que1.front();
que1.pop();
que2.push(temp);
if (que1.empty())
{
return temp;
}
}
}
else
{
while(!que2.empty())
{
temp=que2.front();
que2.pop();
que1.push(temp);
if (que2.empty())
{
return temp;
}
}
}
}
};
void main()
{
MyStack stack;
stack.push('a');
stack.push('b');
stack.push('c');
cout<<stack.top()<<endl;
stack.pop();
stack.push('d');
cout<<stack.top()<<endl;
stack.pop();
cout<<stack.top()<<endl;
stack.push('e');
cout<<stack.top()<<endl;
stack.pop();
cout<<stack.top()<<endl;
stack.pop();
cout<<stack.top()<<endl;
}