1. 程式人生 > >c#自定義棧

c#自定義棧

入棧 exceptio csharp 排隊 private 大小 val sta 先進後出

棧的原理是先進後出。隊列是先進先出。棧像乘坐電梯,後進的先出去。隊列就是排隊。

實現代碼:

  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];
            }
        }
    }

  

c#自定義棧