线性表-数组描述

 1 线性表定义

线性结构:线性结构中的元素之间的关系是一对一的关系。

线性表(linear list):也称有序表(order list),它的每一个实例都是元素的一个有序集合。每一个实例的形式为(e0,e1,e2,...,en-1),其中n是有穷自然数,ei是线性表的元素,i是线性表元素ei的索引,n是线性表的大小或长度。元素可以被看做原子,它们本身的结构与线性表的结构无关,但是必须是同一种类型。当n为0时,线性表为空;当n>0时,e0是线性表的首元素,en-1是线性表的最后一个元素。可以认为e0先于e1,e1先于e2。除了这种先后关系外,线性表不在有其他关系。一般来说,第一个元素无前驱,最后一个元素无后驱,其他每个元素都有且只有一个前驱和后驱。

 

1.1 线性表的抽象数据类型

一个线性表可以用一个抽象数据类型(abstract data type,ADT)来说明,既说明它的实例,也说明对他的操作。这里省略了对创建一个实例和撤销一个实例的操作说明。

ADT linearList
{
实例
        有限个元素的有限集合
操作
        empty();若为空,则返回true,否则返回false
         size();返回线性表的大小(表的元素个数) 
     get(index);返回线性表中索引为index的元素
     indexOf(x);返回线性表中第一次出现x的索引。若不存在,则返回-1
   erase(index);删除索引为index的元素,索引大于index的元素其索引减1  
insert(index,x);把x插入线性表中索引为index的位置上,索引大于等于index的元素其索引加1
};

 

以下为一个线性表的抽象类

template<class T>
class linearList
{
public:
    virtual ~linearList() {}; 
    virtual bool empty() const = 0;
            //返回true,当且仅当线性表为空
    virtual int size() const = 0;
            //返回线性表的元素个数
    virtual T& get(int theIndex) const = 0;
            //返回索引为theIndex的元素
    virtual int indexOf(const T& theElement) const = 0;
            //返回元素theElement第一次出现时的索引
    virtual void erase(int theIndex) = 0;
            //删除索引为theIndex的元素
    virtual void insert(int theIndex, const T& theElement) = 0;
            //把theElement插入线性表中索引为theIndex的位置上
};

 

2 线性表的顺序存储结构

指的是用一段地址连续的存储单元依次存储线性表的数据元素。其实用数组来存储线性表的元素

要创建一个数组类(如vector) ,以实现抽象数据类型linearList,必须首先选择数组element的类型和数组长度。使用模板可以很好解决

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值