线性表的表现形式:
零个或多个数据元素组成的集合。
数据元素在位置上是有序排列的。
数据元素的个数是有限的。
数据元素的类型必须相同。
我们可以抽象出来线性表的定义:
线性表是具有相同类型的n(n >= 0)个数据元素的有限序列,(a0,a1,a2,a3,a4,,,,,an-1),其中ai叫表项,即数据元素,n为表长。
线性表的存在有它独有的性质:
a0为线性表的第一个元素,只有一个后继元素。
an-1为线性表的最后一个元素,只有一个前驱元素。
所以除了首尾两个元素之外其它元素既有一个前驱也有一个后继。
线性表直接支持逐项访问和顺序存取。
线性表只是一个抽象的概念,那我们在程序中应该如何描述并使用一个线性表?
首先考虑一下线性表能干什么?
将元素插入线性表。
将元素从线性表删除。
获取目标位置处元素的值。
设置目标位置处元素的值。
获取线性表的长度。
清空线性表。
我们在程序中将线性表根据它的特点抽象出一个类:
template <typename T>
class List : public Object
{
public:
virtual bool insert(int i,const T& e) = 0;
virtual bool remove(int i) = 0;
virtual bool set(int i,const T& e) = 0;
virtual bool get(int i,T& e )const = 0;
virtual int length()const = 0;
virtual void clear() = 0;
};
其中Object类中实现了对new和delete,new[]和delete[]的重载,目的在于实现可移植性强。
使用泛型编程适用于各种类型。
总结:线性表在程序中表现为一种特殊的数据类型。
线性表是数据元素的有序并且有限的集合。
线性表中的数据元素必须是类型相同的。
线性表可用于描述排队关系的问题。
线性表在C++中表现为一个抽象类。