C#数据结构之顺序表(SeqList)实例详解

2019-12-30 11:15:47王旭
易采站长站为您分析C#数据结构之顺序表(SeqList)实现方法,结合实例形式较为详细的分析了顺序表的定义、原理与具体实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下  

本文实例讲述了C#数据结构之顺序表(SeqList)实现方法。,具体如下:

线性结构(Linear Stucture)是数据结构(Data Structure)中最基本的结构,其特征用图形表示如下:

C#数据结构之顺序表(SeqList)实例详解

即:每个元素前面有且只有一个元素(称为“前驱”),同样后面有且只有一个元素(称为"后继")--注:起始元素的前驱认为是空,末尾元素的后继认为也是空,这样在概念上就不冲突了。

线性表(List)是线性结构的一种典型实现,它又可以分为:顺序表(SeqList)和链表(LinkList)二大类.

顺序表(SeqList)的基本特征为:元素在内部存储时是一个接一个在存储单元中按顺序存储的,所以只要知道"起始元素的存储地址"--称为顺序表的基地址(Base Address)以及顺序表中任何元素的位置(即它是第几个元素),就能直接定位到该元素的地址,从而直接访问到该元素的值。也就是说存储/读取每个元素所用的时间是相同的,即所谓的“随机存取”

C#语言中数组(Array)在内存中占用的就是一组连续的存储区域,所以用数组来实现顺序表再适用不过。

先来定义线性表的通用接口IListDS.cs(注:DS为DataStructure的缩写)


namespace 线性表
{
  public interface IListDS<T>
  {
    //取得线性表的实际元素个数
    int Count();
    //清空线性表
    void Clear();
    //判断线性表是否为空
    bool IsEmpty();
    //(在末端)追加元素
    void Append(T item);
    //在位置i“前面”插入元素item
    void InsertBefore(T item, int i);
    //在位置i“后面”插入元素item
    void InsertAfter(T item, int i);
    //删除索引i处的元素
    T RemoveAt(int i);
    //获得索引位置i处的元素
    T GetItemAt(int i);
    //返回元素value的索引
    int IndexOf(T value);
    //反转线性表的所有元素
    void Reverse();
  }
}

顺序表(SeqList)的实现: