public IImmutableStack<T> Pop() { var newList = new LinkedList<T>(_list); newList.RemoveLast(); return new Stack<T>(newList); }
public IImmutableStack<T> Push(T value) { var newList = new LinkedList<T>(_list) {value}; return new Stack<T>(newList); }
private Stack(LinkedList<T> list) { _list = list; }