使用最简单的思路,用一个栈作为输入栈,保存输入数据,另一个栈作为删除栈,在删除时将输入栈的数据依次放入删除栈中,之后删除输入栈的栈底元素,最后还原输入栈。代码如下。

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        if(stack1.empty()){
            return -1;
        }
        while(stack1.size() != 1){
            stack2.push(stack1.top());
            stack1.pop();
        }
        int num = stack1.top();
        stack1.pop();
        while(!stack2.empty()){
            stack1.push(stack2.top());
            stack2.pop();
        }
        return num;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};