数据结构之堆栈(Stack)

盘子图解

先放最大的1号盘子, 然后放2号盘子, 再放三号盘子, 最后放四号最小的盘子;
拿盘子的时候, 只能从最上面开始拿, 先拿4号, 然后3号, 2号, 最后1号盘子;

瓶子图解

瓶内依次放入编号1-7的球;
在不破坏瓶子的情况下, 想要取出所有的球, 只能依次往外倒, 顺序依次为7-1;

解释

先进后出, FILO(First In Last Out)

该堆栈有一道经典的题目就是逆序, 把顺序摆放的数字, 逆序打出来, 如下:

1
2
3
4
5
6
7
8
private Stack<Integer> reverse(Stack<Integer> nums) {
Stack<Integer> ans = new Stack<>();
while (nums.size() > 0) {
Integer x = nums.pop();
ans.push(x);
}
return ans;
}