package com.interview.books.ccinterview;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
/**
* Created with IntelliJ IDEA.
* User: stefanie
* Date: 7/15/14
* Time: 10:14 AM
*/
public class CC6_SetOfStack<T> extends Stack<T> {
int N;
int size;
List<Stack<T>> stacks = new LinkedList<>();
public CC6_SetOfStack(int n){
this.N = n;
}
public CC6_SetOfStack(){
this.N = 10;
}
private Stack<T> getCurrentStack(){
return stacks.get(stacks.size() - 1);
}
@Override
public T push(T item) {
if(stacks.isEmpty() || getCurrentStack().size() == N)
stacks.add(new Stack<T>());
stacks.get(stacks.size() - 1).push(item);
size++;
return item;
}
@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;
}
}