栈的特点是先进后出,只能在栈顶进行元素的插入与删除

队列的特点,在队头进行元素的删除,在队尾进行元素的插入

用两个栈实现一个队列,利用栈的特点来实现队列,可以把元素压入一个栈中,然后将这个栈中的元素弹出在另外一个栈中,再弹出元素,则就实现了队列的出列。

例如:元素: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;

}