2023-11-02
自我提升
0

myList.cs

c#
using System; using System.Collections.Generic; using System.Text; namespace MyList列表 { class MyList<T> { private T[] data = new T[0];//data null private int count = 0;// 元素个数 数据个数 public int Capacity //获取容量大小 { get { return data.Length; } } public int Count //获取元素个数 { get { return count; } } public void Add(T item) //添加元素 { if (data.Length == 0) { data = new T[4]; } if (data.Length == count) //添加元素之前 ,先判断数组是否已经满 { T[] temp = new T[count * 2]; for(int i = 0; i < data.Length; i++) { temp[i] = data[i]; } data = temp; } data[count] = item; count++; } public T this[int index] //访问元素 { get { if(index<0 || index > count - 1) { //抛出异常 throw new ArgumentOutOfRangeException("索引参数超出范围了"); } return data[index]; } set { data[index] = value; } } public void Insert(int index,T item) //插入元素 { if (index < 0 || index > count - 1) //判断是否存在索引 { throw new ArgumentOutOfRangeException("索引参数超出范围了"); } for(int i = count - 1; i > index - 1; i--) { // count-1 index data[i + 1] = data[i]; } data[index] = item; count++; } public void RemoveAt(int index) //移除指定位置元素 { if (index < 0 || index > count - 1) { throw new ArgumentOutOfRangeException("索引参数超出范围了"); } for(int i = index + 1; i < count; i++) { // index+1 count-1 data[i - 1] = data[i]; } count--; } public int IndexOf(T item) //从前往后获取元素所在的索引位置 { int index = -1; for(int i = 0; i < count; i++) {// ToString Equals if (item.Equals(data[i]) ) { index = i;break; } } return index; //从前往后 } public int LastIndexOf(T item)//从后往前获取元素所在的索引位置 { int index = -1; for (int i=count-1;i>=0;i--) {// ToString Equals if (item.Equals(data[i])) { index = i; break; } } return index; //从后往前 } public void Sort() //排序 { Array.Sort(data, 0, count); //0, count 指范围 } } }

Program.cs

c#
using System; using System.Collections.Generic; namespace MyList列表 { class Program { static void Main(string[] args) { // 1.Capacity 获取容量⼤⼩ MyList<int> list = new MyList<int>(); Console.WriteLine(list.Capacity); // 2.Add()⽅法添加元素 list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); list.Add(4); // 5.Count属性访问元素个数 Console.WriteLine(list.Count); //遍历集合 for(int i = 0; i < list.Count; i++) { Console.Write(list[i] + " "); } // 3.Insert()⽅法插⼊元素 list.Insert(2, 100); for (int i = 0; i < list.Count; i++) //遍历集合 { Console.Write(list[i] + " "); } Console.WriteLine(); // 4.[index]访问元素(索引器) int temp1 = list[10]; int temp2 = list[-1]; List<int> l = new List<int>(); int temp = l[-1]; // 6.RemoveAt()⽅法移除指定位置的元素 list.RemoveAt(3); for (int i = 0; i < list.Count; i++) //遍历集合 { Console.Write(list[i] + " "); } Console.WriteLine(); // 7.IndexOf()⽅法取得⼀个元素所在列表中的索引位置 Console.WriteLine(list.IndexOf(4)); //从前往后搜索 Console.WriteLine(list.LastIndexOf(4)); //从后往前搜索 // 8.Sort()对列表中是元素进⾏从⼩到⼤排序 list.Sort(); for (int i = 0; i < list.Count; i++) //遍历集合 { Console.Write(list[i] + " "); } Console.WriteLine(); } } }