刚学的新手,如有不对,轻喷。
一、两个栈实现一个队列
#include<stack>
class myqueue
{
public:
bool empty();
void pop();
void push(int val);
int size();
int back();
int front();
private:
stack<int>sk1;
stack<int>sk2;
};
bool myqueue::empty()
{
return sk1.empty();
}
void myqueue::pop()
{
for (int i = 1; i <= sk1.size() - 1; i++)
{
sk2.push(sk1.top());
sk1.pop();
}
sk1.pop();
for (int i = 1; i <= sk2.size(); i++)
{
sk1.push(sk2.top());
sk2.pop();
}
}
void myqueue::push(int val)
{
sk1.push(val);
}
int myqueue::size()
{
return sk1.size();
}
int myqueue::front()
{
int temp;
for (int i = 1; i <= sk2.size()-1; i++)
{
sk2.push(sk1.top());
sk1.pop();
}
temp=sk1.top();
for (int i = 1; i <= sk2.size(); i++)
{
sk1.push(sk2.top());
sk2.pop();
}
return temp;
}
int myqueue::back()
{
return sk1.top();
}
二、两个队列实现一个栈
class mystack
{
public:
bool empty();
void pop();
void push(int val);
int size();
int top();
private:
queue<int>qe1;
queue<int>qe2;
};
bool mystack::empty()
{
return qe1.empty();
}
void mystack::pop()
{
for (int i = 1; i <= qe1.size() - 1; i++)
{
qe2.push(qe1.front());
qe1.pop();
}
qe1.pop();
for (int i = 1; i <= qe2.size(); i++)
{
qe1.push(qe2.front());
qe2.pop();
}
}
void mystack::push(int val)
{
qe1.push(val);
}
int mystack::size()
{
return qe1.size();
}
int mystack::top()
{
return qe1.back();
}