栈的特点是先进后出,只能在栈顶进行元素的插入与删除
队列的特点,在队头进行元素的删除,在队尾进行元素的插入
用两个栈实现一个队列,利用栈的特点来实现队列,可以把元素压入一个栈中,然后将这个栈中的元素弹出在另外一个栈中,再弹出元素,则就实现了队列的出列。
例如:元素:1 2 3 4
压入s1: 1 2 3 4 弹出在s2中:4 3 2 1 再弹出到s1中:1 2 3 4
class Q
{
private:
stack<int>_s1;
stack<int>_s2;
public:
Q(stack<int>s1, stack<int>s2)
:_s1(s1)
, _s2(s2)
{}
void Push(const int &d)
{
_s1.push(d);
}
void Pop()
{
if (!_s2.empty())
{
while (!_s2.empty())
{
cout << _s2.top() << " ";
_s2.pop();
}
}
else
{
while (!_s1.empty())
{
_s2.push(_s1.top());
_s1.pop();
}
while (!_s2.empty())
{
cout << _s2.top() << " ";
_s2.pop();
}
}
}
};
int main()
{
stack<int>s1;
stack<int>s2;
Q s(s1,s2);
s.Push(1);
s.Push(2);
s.Push(3);
s.Pop();
getchar();
return 0;
}