
C#数据结构【数组】
数组
静态数组:
int[],float[],string[]等
特点:数组一旦创建,其容量的大小是无法进行改变的
动态数组:
ArrayList List
特点:可以根据元素的多少动态的调整数组容量的大小
泛型数组(List):
优势:对于存储值类型数据,性能更优;使代买更清晰和保证类型安全
动态数组代码实现
这里主要考虑的便是数组中所要实现的功能(插入数据,获取数据,删除数据,修改数据,数组的扩容)
(1).定义一个数组来存储数据T[] data,通过num来统计数组的数组的大小
1 | private T[] data;//数组数据 |
(2).所需要的参数定义完毕后便是对构造方法,这里主要考虑的便是数组需要在创建之初要设置好数组的大小
1 | /// <summary> |
(3).考虑使用过程中所需要的功能【添加数据,修改数据,删除数据,获取数据,扩容数组】
插入/添加数据
①.首先需要判定index是否在数组范围内
1 | if(index < 0 || index >num )throw new ArgumentException("index不合法,请检查"); |
②.由于我们使用的是动态数组,当数组的长度和num相同时,则需要对数组进行扩容【相关代码请看ResetCapacity()方法】
1 | //当数组容量不足时则需要进行数组的扩容 |
③下面我们要考虑的便是添加数据,这里主要考虑的便是插入的目标索引和数据信息,需要将目标位置索引数据往后挪动,然后将目标索引的数据写入即可
1 | public void Add(int index,T e) { |
④这里为了方便添加了向数据末尾和数据头部添加数据的方法,只需将num和数据添加写入即可
1 | /// <summary> |
获取数据
这里考虑的比较少一些,只需判断所要获取的索引是否越界,然后返回相应索引的数据
1 | /// <summary> |
修改数据
这里考虑的比较少一些,只需判断所要获取的索引是否越界,将相应索引的数据重新赋值即可
1 | /// <summary> |
删除数据
1 | /// <summary> |
判断数据是否存在
1 | /// <summary> |
下面是完整代码
1 | private T[] data;//数组数据 |
具体测试代码详见
1 | ArrayOne<int> arrayOne = new ArrayOne<int>(20); |
控制台输出效果
1 | 数组信息:ArrayOne: count=10 capacity=20 |
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论