#include <iostream>
using namespace std;
#include <stack>
class Queue{
public:
stack<int> myStack1;
stack<int> myStack2;
void push(int t){
myStack1.push(t);
}
int pop(){
if (empty())
{
return NULL;
}
else if (myStack2.empty())
{
int size=myStack1.size();
for (int i=0;i<size;i++)
{
myStack2.push(myStack1.top());
myStack1.pop();
}
}
int temp=myStack2.top();
myStack2.pop();
return temp;
}
bool empty(){
bool b=false;
if (myStack2.empty()&&myStack1.empty())
{
b=true;
}
return b;
}
int size(){
int temp=myStack1.size();
temp+=myStack2.size();
return temp;
}
//取队首元素
int front(){
int result=NULL;
if (empty())
{
return result;
}
else if (myStack2.empty())
{
int size=myStack1.size();
for (int i=0;i<size;i++)
{
myStack2.push(myStack1.top());
myStack1.pop();
}
}
result=myStack2.top();
return result;
}
//取队尾元素
int back(){
int result=NULL;
if (empty())
{
return result;
}
else if (!myStack1.empty())
{
result=myStack1.top();
}else{
int size=myStack2.size();
for (int i=0;i<size;i++)
{
myStack1.push(myStack2.top());
myStack2.pop();
}
result=myStack1.top();
}
return result;
}
};
void main()
{
Queue *queue=new Queue();
for (int i=0;i<10;i++)
{
queue->push(i);
}
for (int i=0;i<5;i++)
{
cout<<queue->pop()<<endl;
}
cout<<"front:"<<queue->front()<<endl;
cout<<"back:"<<queue->back()<<endl;
for (int i=10;i<20;i++)
{
queue->push(i);
}
cout<<"pop5-19"<<endl;
cout<<"queuesize"<<queue->size()<<endl;
for (int i=0;true;i++)
{
if (queue->empty())
{
break;
}
cout<<queue->pop()<<endl;
}
}
using namespace std;
#include <stack>
class Queue{
public:
stack<int> myStack1;
stack<int> myStack2;
void push(int t){
myStack1.push(t);
}
int pop(){
if (empty())
{
return NULL;
}
else if (myStack2.empty())
{
int size=myStack1.size();
for (int i=0;i<size;i++)
{
myStack2.push(myStack1.top());
myStack1.pop();
}
}
int temp=myStack2.top();
myStack2.pop();
return temp;
}
bool empty(){
bool b=false;
if (myStack2.empty()&&myStack1.empty())
{
b=true;
}
return b;
}
int size(){
int temp=myStack1.size();
temp+=myStack2.size();
return temp;
}
//取队首元素
int front(){
int result=NULL;
if (empty())
{
return result;
}
else if (myStack2.empty())
{
int size=myStack1.size();
for (int i=0;i<size;i++)
{
myStack2.push(myStack1.top());
myStack1.pop();
}
}
result=myStack2.top();
return result;
}
//取队尾元素
int back(){
int result=NULL;
if (empty())
{
return result;
}
else if (!myStack1.empty())
{
result=myStack1.top();
}else{
int size=myStack2.size();
for (int i=0;i<size;i++)
{
myStack1.push(myStack2.top());
myStack2.pop();
}
result=myStack1.top();
}
return result;
}
};
void main()
{
Queue *queue=new Queue();
for (int i=0;i<10;i++)
{
queue->push(i);
}
for (int i=0;i<5;i++)
{
cout<<queue->pop()<<endl;
}
cout<<"front:"<<queue->front()<<endl;
cout<<"back:"<<queue->back()<<endl;
for (int i=10;i<20;i++)
{
queue->push(i);
}
cout<<"pop5-19"<<endl;
cout<<"queuesize"<<queue->size()<<endl;
for (int i=0;true;i++)
{
if (queue->empty())
{
break;
}
cout<<queue->pop()<<endl;
}
}