您当前的位置: 首页 >  c#
  • 2浏览

    0关注

    193博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#数据结构(上)

我寄人间雪满头丶 发布时间:2021-12-09 01:19:20 ,浏览量:2

目录
  • 数组
  • 链表
  • 时间复杂度
  • 栈与队列
  • 集合和映射
  • 有序数组和二分查找

数组

静态数组:int[] float[] double[] char[] string[] 特点:数组一旦创建,其容量的大小是无法改变的 int[] arr = new int[20]

动态数组:ArrayList List(泛型) 下面是使用数组实现的动态数组。

    class Array1
    {
        private T[] data;   //存储元素的数组
        private int N;      //数组中的元素个数

        //通过指定容量开辟数组空间
        public Array1(int capacity)
        {
            data = new T[capacity];
            N = 0;
        }

        //默认数组容量为10
        public Array1() : this(10) { }

        //获取数组容量的属性
        public int Capacity
        {
            get { return data.Length; }
        }

        //获取数组元素个数的属性
        public int Count
        {
            get { return N; }
        }

        //判断数组是否为空的属性
        public bool IsEmpty
        {
            get { return N == 0; }
        }
        
        //在数组指定位置添加元素e
        public void Add(int index,T e)
        {
            if(index N)
                throw new ArgumentException("数组索引越界");

            if (N == data.Length)
                ResetCapacity(2 * data.Length);

            for (int i = N-1; i >= index; i--)
                data[i + 1] = data[i];

            data[index] = e;
            N++;
        }

        //在数组尾部添加元素e
        public void AddLast(T e)
        {
            Add(N, e);
        }

        //在数组头部添加元素e
        public void AddFirst(T e)
        {
            Add(0, e);
        }

        //获取指定位置的元素e
        public T Get(int index)
        {
            if(index=N)
                throw new ArgumentException("数组索引越界");

            return data[index];
        }

        //获取数组头部的元素e
        public T GetFirst()
        {
            return Get(0);
        }

        //获取数组尾部的元素e
        public T GetLast()
        {
            return Get(N - 1);
        }

        //修改数组中的值
        public void Set(int index,T newE)
        {
            if (index = N)
                throw new ArgumentException("数组索引越界");

            data[index] = newE;
        }

        //查询数组是否包含元素e
        public bool Contains(int e)
        {
            for (int i = 0; i             
关注
打赏
1648518768
查看更多评论
0.0915s