程序员面试经典--栈实现堆盘子

来源:互联网 发布:广州数控编程讲解视频 编辑:程序博客网 时间:2024/06/08 14:00

3.3问题:

设想有一堆盘子,堆太高可能会倒下来。因此,在显示生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。setOfStacks应该由多个栈组成,并且在当前一个栈填满时新建一个栈。此外,SetOfStacks.push()和SeOfStacks.pop()应该与普通栈的操作方法相同(也就是说,pop()返回的值,应该跟只有一个栈时的情况一样)。

class SetOfStacks{ArrayList<Stack> stacks =new ArrayList<Stack>();public void push(int v){Stack last = getLastStack();if(last!=null&&!last.isFull()){last.push(v);}else{Stack stack = new Stack(capacity);//若最后一个栈被填满则新建一个栈,追加到ArrayList后面。stack.push(v);stacks.add(stack);}}public int pop(){Stack last = getLastStack();int v=last.pop();if(last.size==0){stacks.remove(stacks.size()-1);//当最后一个栈为空的时候,将这个栈从ArrayList里面移除。}return v;}public Stack getLastStack(){//获取当前栈,ArrayList里面的最后一个栈。if(stacks.size()==0){return null;}return stacks.get(stacks.size()-1);}}



0 0
原创粉丝点击