数据结构之顺序表的常用方法

xiaoxiao2025-11-17  5

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 顺序表 { class SqeList<T> { private int _flag; //定义一个实际数量 private T[] _ints; //定义一个泛型数组 public SqeList() { _ints = new T[30]; //构造函数用来初始化值 } public void AddItem(T Item) //添加 { if(_flag >= _ints.Length) //如果实际长度等于或者大于数组长度 { Console.WriteLine("空间溢出"); //空间溢出直接返回 return; } _ints[_flag] = Item; _flag++; } public T RemoveAt(int index) //删除 返回所需删除的 T值 { T returnValue = default(T); //先默认一个返回值 if(index < 0 || index >= _flag) //如果传入的索引小于0 或者索引大于等于实际长度 { Console.WriteLine("索引出界"); goto Tip; //直接返回默认值 } for (int i = index; i < _flag-1; i++) { _ints[i] = _ints[i + 1]; //index后面的数往前移一位 } returnValue = _ints[index]; _flag--; Tip: return returnValue; } public void Insert(int index, T Item) //插入 传入需要插入的 位置和值 { if(_flag >= _ints.Length) { Console.WriteLine("空间溢出"); return; } if(index < 0 || index > _flag) //如果索引小于0 或者索引大于实际长度 { Console.WriteLine("索引出界"); return; } for (int i = _flag; i < index; i--) //index后面的数 后移一位 { _ints[i] = _ints[i - 1]; } _ints[index] = Item; _flag++; } public void showItem(Action<T> ac) //遍历 委托方法 { for (int i = 0; i < _flag; i++) { ac(_ints[i]); } } public void clear() //清空 { _flag = 0; } public void Reverse() //反序 { T temp; //定义一个临时变量 用来接临时值 for (int i = 0; i < _flag/2; i++) { temp = _ints[i]; //把头 赋给 temp _ints[i] = _ints[_flag - i - 1]; //把尾赋给头 _ints[_flag - i - i] = temp; //把头赋给尾 } } public int Index(T Item) //查找 传入值返回对应索引值 { int returnValue = -1; //如果没有传入的值 就返回-1 for (int i = 0; i < _flag; i++) { if(_ints[i].Equals(Item)) //遍历一遍 与 传入的值比较 { returnValue = i; //如果相等 break; } } return returnValue; } //private void RemoveMin() //删除顺序表最小值 此方法只能用于int float double //{ // int Min = _ints[0]; // int index; // for (int i = 0; i < _flag; i++) // { // if(_ints[i] < Min) // { // Min = _ints[i]; // index = i; // } // } // for (int i = index; i < _flag-1; i++) // { // _ints[i] = _ints[i + 1]; // } // _flag--; //} } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 顺序表 { class MyClass { public string name; public MyClass(int tmp) //构造函数给name赋初值 { name = "张三" + tmp; } } class Program { static void show(MyClass my) { Console.WriteLine(my.name); } static void Main(string[] ints) { SqeList<MyClass> intList = new SqeList<MyClass>(); intList.AddItem(new MyClass(1)); intList.AddItem(new MyClass(2)); intList.AddItem(new MyClass(3)); intList.AddItem(new MyClass(4)); intList.AddItem(new MyClass(5)); intList.showItem(show); Console.ReadLine(); } } }
转载请注明原文地址: https://www.6miu.com/read-5039803.html

最新回复(0)