C++两个栈实现一个队列
2016-12-08 00:14
627 查看
#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;
}
}
相关文章推荐
- C++两个队列实现一个栈
- 利用两个栈实现一个队列(C++版)
- 《剑指offer》:[6]两个栈实现一个队列的C++代码实现
- 两个栈来实现一个队列的C++代码(某公司社会早笔试题)
- 《剑指Offer》附加题_用两个队列实现一个栈_C++版
- c++ 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- c++实现两个堆栈模拟一个队列
- C/C++之用两个栈实现一个队列的功能
- 用两个栈实现一个队列的功能,请用C++实现它
- C++ 用两个栈实现一个队列
- C++之用两个栈实现一个队列
- 用C++实现用两个栈实现一个队列的功能
- 【C++】两个栈实现一个队列
- 利用两个队列实现一个栈(C++版)
- 两个栈实现一个队列——C++ 利用STL 栈stack实现
- 程序员面试宝典之数据结构基础----C++两个栈实现一个队列功能
- 两个栈来实现一个队列的C++代码
- C++ 数据结构实现两个栈实现一个队列
- C++两个队列实现一个栈