首页 > 代码库 > 用Array 实现stack

用Array 实现stack

用Array来实现Stack,语言c#。

欢迎大家批评指正。

 

关键点:

  1. 当数组满的时候,把数组长度延长2倍
  2. 当非空元素等于数组长度的1/4的时候,把数组长度减半。
public class Stack<T>
    {
        T[] a = new T[1];
        int size = 0;

        public bool IsEmpty()
        {
            return size == 0;
        }

        public void Push(T data)
        {
            if (size == a.Length)
            {
                resize(a.Length * 2);
            }

            a[size++] = data;
        }

        public T Pop()
        {
            if (size == 0)
            {
                throw new Exception("The stack is Empty");
            }

            T result = a[--size];
            a[size] = default(T);
            if (size == a.Length / 4)
            {
                resize(a.Length / 2);
            }

            return result;
        }

        private void resize(int newLength)
        {
            T[] b = new T[newLength];
            for (int i = 0; i < size; i++)
            {
                b[i] = a[i];
            }

            a = b;
        }
}