c#自定义栈

栈的原理是先进后出。队列是先进先出。栈像乘坐电梯,后进的先出去。队列就是排队。

实现代码:

  public class myStack<T>
    {
        private int top;
        private T[] stkArr;
        private int maxSize;

        /// <summary>
        /// 表示栈顶索引
        /// </summary>
        public int Top
        {
            set { top = value; }
            get { return top; }
        }

        public T[] StkArr
        {
            set { stkArr = value; }
            get { return stkArr; }
        }

        public int MaxSize
        {
            get { return maxSize; }
            set
            {
                if (value < 0)
                {
                    throw new Exception("maxSize is d 0!");
                }
                else
                {
                    maxSize = value;
                }
            }
        }

        public myStack(int maxSize)
        {
            this.MaxSize = maxSize;
            this.StkArr = new T[maxSize];
            Top = 0;
        }
        /// <summary>
        /// 出栈
        /// </summary>
        public T pop()
        {
            if (isNull())
            {
                throw new Exception("栈为空!");
            }
            else
            {
                return StkArr[--Top];
            }
        }

        /// <summary>
        /// 入栈
        /// </summary>
        public void pash(T value)
        {
            if (isFull())
            {
                throw new Exception("栈已满!");
            }
            else
            {
                StkArr[top++] = value;
            }
        }

        /// <summary>
        /// 判断栈是否已满
        /// </summary>
        /// <returns></returns>
        public bool isFull()
        {
            return (Top == MaxSize);
        }

        /// <summary>
        /// 判断栈是否为空
        /// </summary>
        /// <returns></returns>
        public bool isNull()
        {
            return (Top == 0);
        }

        /// <summary>
        /// 返回栈大小
        /// </summary>
        /// <returns></returns>
        public int getMaxSize()
        {
            return MaxSize;
        }

        /// <summary>
        /// 遍历栈
        /// </summary>
        /// <returns></returns>
        public IEnumerable getEnumerable()
        {
            for (int i = 0; i < MaxSize; i++)
            {
                yield return stkArr[i];
            }
        }
    }