数据结构---线性表
1线性表的逻辑结构
线性表示n>>0个数据元素a1,a2,a3,...an-1,an的有序集合,表中每个元素ai在表中的位置仅取决于元素本身的序号i。相邻左侧元素为其直接前驱,相邻右侧元素为其直接后继,由此可知第一个元素只有直接后继,最后一个元素仅有直接前驱。n为线性表的长度,长度为0的为空表。线性表的特点是数据元素之间存在着一对一的关系。
符号表示:L = (a1,a2,a3,...an-1,an)
有线性表的定义可以看出同一线性表的元素必然具有相同的特性,并且这些数据元素可以是基本数据元素,可以是多个数据项组成的复杂数据元素。
常用操作应该包括:
- 求线性表的长度;
- 寻找第i个元素;
- 根据提供的具体元素值,查找其所在位置;
- 插入新数据元素;
- 删除某个数据元素;
- 修改某个数据元素;
- 清空线性表;
2线性表的抽象类定义
线性表可以分为顺序表和链式表两大类,它们具有相似的特性和操作,因此我们可以定义一个线性表的抽象类,为它们通过统一的对外接口。
template <class type> class ablist { public: ablist(); ~ablist(); int GetLength(return length);//返回线性表的长度 virtual type Get(int i); //取出线性表的第i个元素 virtual bool MakeEmpty() = 0;//清空线性表 virtual bool Set(int i, type value) = 0; //修改线性表第i个元素为value virtual bool Insert(int i, type value) = 0; //在线性表第i个位置处插入元素value virtual type Remove(int i) = 0; //删除线性表第i个元素 virtual type Remove1(type value) = 0; //删除线性表值为value的元素 protected: int length; };