C#数据结构(List)

一、提供的属性和接口

interface IMList<T>
{
    int Capacity { get; set; }
    int Count { get; }
    void Add(T item);
    void Insert(int index, T item);
    bool Remove(T item);
    bool RemoveAt(int index);
    bool Contains(T item);
    int IndexOf(T item);
    void Clear();
}

二、顺序存储实现

//////////////////////////////////////////顺序存储 List//////////////////////////////////////////////////
class MListSQ<T> : IMList<T>
{
    private const int DEFAULT_CAPACITY = 4;
    private static readonly T[] _defaultData = new T[DEFAULT_CAPACITY];

    private T[] _items;
    private int _count = 0;

    public MListSQ() {
        _items = _defaultData;
    }
    public MListSQ(int capacity)
    {
        _items = new T[capacity];
    }

    T this[int index]
    {
        get { return _items[index]; }
        set { _items[index] = value; }
    }

    public int Capacity
    {
        get { return _items.Length; }

        set 
        { 
            if(value < _count)
            {
                throw new IndexOutOfRangeException("容量设置过小,会有数据丢失");
            }
            if(value != _items.Length)
            {
                T[] temp = new T[value];
                _items.CopyTo(temp, 0);
                _items = temp;
            }
        }
    }

    public int Count
    {
        get { return _count; }
    }

    //调整容量大小
    private void ReSizeCapacity(int size)
    {
        if (size <= _items.Length) return;//容量足够
        if (size < _count) return;        //容量过小 丢失数据

        int _capacity = (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值