数据结构--线性表

来源:互联网 发布:java url encode 编辑:程序博客网 时间:2024/06/03 14:13

线性表的表现形式:

零个或多个数据元素组成的集合。

数据元素在位置上是有序排列的。

数据元素的个数是有限的。

数据元素的类型必须相同。

我们可以抽象出来线性表的定义:

线性表是具有相同类型的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++中表现为一个抽象类。


原创粉丝点击