最近要给一个打算学.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(); //倒置(任何线性表都可以倒置)
}
/// 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、顺序表
}
}
}
顺序表的几个例子
{
Console.WriteLine(Lb[i]);
}
}
}
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