如何仅用队列结构实现栈结构?
用两个队列实现栈
class mystack_by_queue{
public:
void pop(){
q1.pop();
}
void push(int data){
int temp;
while (!q1.empty()){
temp = q1.front();
q1.pop();
q2.push(temp);
}
q1.push(data);
while (!q2.empty()){
temp = q2.front();
q2.pop();
q1.push(temp);
}
}
int top(){
return q1.front();
}
public:
queue<int>q1;
queue<int>q2;
};
如何仅用栈结构实现队列结构?
用两个栈实现
class queue_by_stack{
public:
void pop(){
int temp;
if (!s2.empty())
s2.pop();
else{
while (!s1.empty())
{
temp = s1.top();
s1.pop();
s2.push(temp);
}
s2.pop();
}
}
int front(){
int temp;
if (!s2.empty())
return s2.top();
else{
while (!s1.empty())
{
temp = s1.top();
s1.pop();
s2.push(temp);
}
return s2.top();
}
}
void push(int data){
s1.push(data);
}
public:
stack<int>s1;
stack<int>s2;
};