package com.interview.algorithms.stackqueue; import com.interview.basics.model.collection.list.LinkedList; import com.interview.basics.model.collection.list.List; import com.interview.basics.model.collection.stack.FixCapabilityArrayStack; import com.interview.basics.model.collection.stack.Stack; /** * Created with IntelliJ IDEA. * User: stefanie * Date: 7/15/14 * Time: 10:14 AM */ public class C7_5_SetOfStack<T> implements Stack<T> { int N; int size; List<Stack<T>> stacks = new LinkedList<>(); public C7_5_SetOfStack(int n){ this.N = n; } public C7_5_SetOfStack(){ this.N = 10; } private Stack<T> getCurrentStack(){ return stacks.get(stacks.size() - 1); } @Override public void push(T item) { if(stacks.isEmpty() || getCurrentStack().size() == N) stacks.add(new FixCapabilityArrayStack<T>(N)); stacks.get(stacks.size() - 1).push(item); size++; } @Override public T pop() { Stack<T> current = getCurrentStack(); T element = current.pop(); while(current.isEmpty()) { stacks.remove(stacks.size() - 1); current = getCurrentStack(); } size--; return element; } @Override public T peek() { return getCurrentStack().peek(); } @Override public boolean isEmpty() { return size == 0; } @Override public int size() { return size; } public T popAt(int i){ if(i < stacks.size()) return stacks.get(i).pop(); return null; } @Override public T get(int i) { return null; } }