线性表(List)的表现形式:
零个或者多个数据元素组成的集合
数据元素在位置上是有序排列的
数据元素的个数是有限的
数据元素的类型必须相同
线性表的抽象定义:
线性表的性质:
a0为线性表的第一个元素,只有一个后继
an-1为线性表的最后一个元素,只有一个前驱
除了a0和an-1外,其他的元素ai,既有前驱又有后继
直接支持逐项访问和顺序存取
我们思考下面的问题:
班级同学之间的关系不是一对一的,所以不能用线性表描述
公司中的领导可以领导很多人,所以不能用线性表描述
用物品排队占座是不能用线性表描述的,虽然是一对一的关系,但是排队的主体是人,而物品和人不是同一类元素
花名册的名字要看是怎么写的,如果是顺序写的,就可以用线性表描述,如果是没有规律的乱排就不能用线性表描述
线性表是生活队列关系的总结
线性表的一些常用操作:
将元素插入线性表
将元素从线性表中删除
获取目标位置处元素的值
设置目标位置处元素的值
获取线性表的长度
清空线性表
线性表在程序中表现为一种特殊的数据类型:
添加List抽象类如下:
1 #ifndef LIST_H 2 #define LIST_H 3 4 #include "Object.h" 5 6 namespace DTLib 7 { 8 9 template <typename T> 10 class List : public Object 11 { 12 public: 13 virtual bool insert(int i, const T& e) = 0; 14 virtual bool remove(int i) = 0; 15 virtual bool set(int i, const T& e) = 0; 16 virtual bool get(int i, T& e) = 0; 17 virtual int length() const = 0; 18 virtual void clear() = 0; 19 }; 20 21 } 22 23 24 #endif // LIST_H
List是一个抽象类,是用来被继承的。
小结:
线性表是数据元素有序并且有限的集合
线性表中的数据元素必须是类型相同的
线性表可用于描述排队关系的问题
线性表在程序中表现为一种特殊的数据类型
线性表在C++中表现为一个抽象类