c#自定義棧
阿新 • • 發佈:2017-10-04
入棧 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#自定義棧