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();
}
}
}