线性表

线性表

1、线性表的概念和性质

1、概念

​ 集合 E E E上的一个线性表就是 E E E中一组有穷个元素排成的序列 L = ( e 0 , e 1 , ⋯ e n − 1 ) L=(e_0,e_1,\cdots e_{n-1}) L=(e0,e1,en1),其中 e i ∈ E e_i\in E eiE n ≥ 0 n\geq 0 n0。在一个表里可以包含零个或多个元素,序列中的每一个元素在表里都有一个确定的位置,称为元素的下标。下标一般从0开始,不含任何元素的表称作空表。

2、性质
  • 表元素之间存在一个基本关系,称为下一个关系。对于表 L = ( e 0 , e 1 , ⋯ e n − 1 ) L=(e_0,e_1,\cdots e_{n-1}) L=(e0,e1,en1),下一个关系是二元组的集合 { ( e 0 , e 1 ) , ( e 1 , e 2 ) ⋯ ( e n − 2 , e n − 1 ) } \{(e_0,e_1),(e_1,e_2)\cdots (e_{n-2},e_{n-1})\} { (e0,e1),(e1,e2)(en2,en1)}。可以看出下一个关系是一种顺序关系,即线性关系,线性表表示一种线性结构。
  • 在一个非空的线性表里,存放着唯一一个首元素和唯一一个尾元素。除首元素之外,表中的每个元素都有且仅有一个前驱元素,除尾元素外,表中的每个元素都有且仅有一个后继元素。

2、表抽象数据类型

ADT List:
    List(self)
    is_empty(self)
    len(self)
    prepend(self,elem)
    append(self,elem)
    insert(self,elem)
    del_first(self)
    del_last(self)
    del(self,i)
    search(self,elem)
    forall(self,op)           #对表中每个元素执行操作op

3、线性表的实现

在实现表数据结构时,需要考虑以下两点:

  • 计算机内存的特点,以及保存元素和元素顺序信息的需要。
  • 各种重要操作的效率。

基于以上考虑,有两种基本的实现模型:

  • 将表中的元素顺序地存放在一大块连续的存储区里,这样实现的表称为顺序表。
  • 将表元素存放在通过链接构造的一系列存储块里,这样实现的表称为链接表。

1、顺序表

布局方案

​ 上图表示的是顺序表的基本形式,数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素的下标是其逻辑地址,而元素存储的物理地址(实际内存地址)可以通过存储区的起始地址 L o c ( e 0 ) Loc (e_0) Loc(e0)加上逻辑地址(第 i i i个元素)与存储单元大小( c = s i z e ( 元 素 ) c=size(元素) c=size())的乘积计算而得,即:$Loc(e_i) = Loc(e_0) + c*i $。故访问指定元素时无需从头遍历,通过计算便可获得对应地址,其时间复杂度为O(1)。

​ 如果表中元素的大小不统一,将无法通过公式计算出元素位置。这个时候可以采取另一种布局方案,将实际数据元素另行存储,在顺序表各单元里保存对应元素的的引用信息(链接)。

结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值