C#数据结构(一)线性表

最近要给一个打算学.net的朋友准备些资料,同时自己在数据结构方面也有些薄弱,所以打算从头看看。
弄了一个电子版的C#数据结构,把书里的代码敲了敲,颇有收益。打算整理一下,如果您也跟我一样有空不妨跟着再学学。

线性表是最简单、最基本、最常用的数据结构。
线性结构的特点是结构中的数据元素之间存在一对一的线性关系。
这种一对一的关系指的是数据元素之间的位置关系,即:
(1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素;
(2)除最后一个位置的数据元素外,其它数据元素位置的后面都只有一个元素。

1、线性表

    /// <summary>
    
/// 1、线性表   
    
/// 线性表的接口表示
    
/// </summary>
    public interface IlistDS<T>
    {
        
int GetLength();             //求长度 
        void Clear();                //清空操作
        bool IsEmpty();              //判断线性表是否为空 
        void Append(T item);         //附加操作
        void Insert(T item, int i);  //插入操作
        T Delete(int i);             //删除操作
        T GetElem(int i);            //取表元 
        int Locate(T value);         //按值查找 
        
//---补充
        void Reverse();              //倒置(任何线性表都可以倒置)
    }

2、顺序表

顺序表

    顺序表的几个例子

顺序表的几个例子

3、单链表

单链表
单链表节点
单链表的几个例子

  C#中的线性表

  非泛型Ilist接口继承自ICollection和IEnumerable,是所有线性表的基接口。

  ArrayList(顺序表)、ListDictionary、StringCollection、StringDictionary继承自Ilist。

  泛型Ilist<T>接口继承自ICollection<T>、IEnumerable<T>、IEnumerable。是所有泛型线性表的基接口。

  List<T>等一些集合类实现了Ilist<T>。

  List<T>是 ArrayList 在泛型中的替代品。List<T>的性能比 ArrayList 有很大改变。

  1、ArrayList 默认的 Capacity 是 16,而 List<T>的默认 Capacity是 4;

  2、List<T>的方法不是虚拟方法(ArrayList 的方法是虚拟方法) ,这样可以利用函数内联来提高性能(虚函数不可以被内联);

--

C#数据结构下载:CSharp数据结构(2.0版)电子书.rar

原文地址:https://www.cnblogs.com/tenghoo/p/Data_Structures_List.html