public T leftShift(int index, bool removeTop) { MyStack <T> stack = stacks[index]; T removed_item; if (removeTop) { removed_item = stack.Pop(); } else { removed_item = stack.RemoveBottom(); } if (stack.IsEmpty()) { stacks.RemoveAt(index); } else if (stacks.Count > index + 1) { T v = leftShift(index + 1, false); stack.Push(v); } return(removed_item); }
public T Pop() { MyStack <T> last = GetLastStack(); T v = last.Pop(); if (last.size == 0) { stacks.RemoveAt(stacks.Capacity - 1); } return(v); }