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源码中内部也是用的数组,实现上诉几个方法的思路是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值