C#手寫簡單的Stack

using System;

namespace DataStructure
{
    public class MyStack<T>
    {
        private T[] _array;

        private int _size;

        public MyStack(int size)
        {
            _array = new T[size];
            _size = 0;
        }

        public MyStack()
        {
            _array = new T[4];
            _size = 0;
        }

        public int Count
        {
            get { return _size; }
        }

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

        public void Clear()
        {
            _size = 0;
        }

        public void Push(T item)
        {
            //這裏判斷stack的長度與內部數組的長度是否相等,如果相等就對它的長度進行擴展
            if (this._size == this._array.Length)
            {
                T[] objArray = new T[this._array.Length == 0 ? 4 : 2 * this._array.Length];
                Array.Copy(this._array, 0, objArray, 0, this._size);
                this._array = objArray;
            }
            _array[_size] = item;
            _size++;
        }

        public T Pop()
        {
            T temp = _array[_size - 1];
            _size--;
            return temp;
        }

        public T Peek()
        {
            return _array[_size - 1];
        }

        public override string ToString()
        {
            var str = "";
            for (var i = 0; i < Count; i++)
            {
                str += _array[i].ToString() + " ";
            }
            return str;
        }
    }
}

代碼十分簡單,C#中的Stack源碼中內部也是用的數組,實現上訴幾個方法的思路是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章