数据结构---线性表

1线性表的逻辑结构

        线性表示n>>0个数据元素a1,a2,a3,...an-1,an的有序集合,表中每个元素ai在表中的位置仅取决于元素本身的序号i。相邻左侧元素为其直接前驱,相邻右侧元素为其直接后继,由此可知第一个元素只有直接后继,最后一个元素仅有直接前驱。n为线性表的长度,长度为0的为空表。线性表的特点是数据元素之间存在着一对一的关系。

       符号表示:L = (a1,a2,a3,...an-1,an)

       有线性表的定义可以看出同一线性表的元素必然具有相同的特性,并且这些数据元素可以是基本数据元素,可以是多个数据项组成的复杂数据元素。

       常用操作应该包括:

  1. 求线性表的长度;
  2. 寻找第i个元素;
  3. 根据提供的具体元素值,查找其所在位置;
  4. 插入新数据元素;
  5. 删除某个数据元素;
  6. 修改某个数据元素;
  7. 清空线性表;

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;
};

  

原文地址:https://www.cnblogs.com/zouhq/p/10587351.html