如何使用C#自己创建一个和List集合功能大致相同的自定义集合
首先在介绍如何自己创建一个集合之前,先介绍几个概念:数据结构、数据(data)、数据元素(Data Element)、数据项(Data Item)、数据对象(Data Object)、数据类型(Data Type)
1、数据结构:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。 这里的定义来自百度,其实你可以笼统的理解为数据和数据的关系, 根据数据元素之间关系的不同特性,通常由4类基本数据结构:集合结构、线性结构、树形结构、图状结构,而我们今天创建的集合就是属于线性结构,他的本质是一个数组,我们是通过顺序表来实现。
2、数据:这个好理解,就是计算机处理的各种数据,有数值数据:如整数,实数等;有非数值数据:如字符、、图像、声音等
3、数据元素:数据元素是数据的基本单位,在计算机程序中通常被当作整体来处理,可以由若干个数据项构成
4、数据项:数据项是不可分割的、含有独立意义的最小数据
5、数据对象:相同性质的数据元素的集合就是数据对象,例如,整数数据对象就{0,±1,±2,±3}
6、数据类型:数据类型是数据的取值范围和对数据进行操作的总和。数据类型规定了程序中对象的特性。如果:string(字符串类型)、char(字符类型)、int(整数类型)等等
了解了这几个概念之后,今天要做的就是使用线性表中的顺序表来创建一个和List集合功能大致相同的自定义集合。先介绍一下什么是顺序表:在计算机内,保存线性表最简单、最自然的方式,就是把表中的元素一个接一个地放进顺序的存储单元,这就是线性表的顺序存储(Sequence Storage)。线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表(Sequence List)。
上代码:
一、首先定义一个线性表接口:
前9个抽象函数比较好理解,List集合里也都包含这些方法,但是第10和11个我需要说一下,因为我们的顺序表是通过数组来实现的(其实List集合也是由数组实现的),所以这里的原始容器指的是就是数组
//线性表接口定义:线性表的实现有 顺序表、单链表{双向链表、循环链表}
interface IListDs<T>
{
int GetLength();//1.求长度
void Clear();//2.清空操作
bool IsEmpty();//3.判断线性表是否为空
void Add(T item);//4.添加数据
void Insert(T item, int index);//5.插入数据
T Delete(int index);//6.删除数据
T GetElement(int index);/7./取数据
T this[int index] { get; }//8.索引器取数据
int Locate(T value);//9.按照