using System; namespace algo08_stack { public class ArrayStack { private readonly int _capacity; private readonly T[] _data; private int _top = -1; // 指向栈顶元素,当为-1时表示栈为空 public ArrayStack(int capacity) { _capacity = capacity; _data = new T[capacity]; } public int Count => _top + 1; public void Push(T val) { if (Count == _capacity) throw new InvalidOperationException("Stack full."); _top++; _data[_top] = val; } public T Pop() { if (_top == -1) throw new InvalidOperationException("Stack empty."); T val = _data[_top]; _top--; return val; } } }