首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构学习笔记——线性表(上)

数据结构学习笔记——线性表(上)

作者头像
蜻蜓队长
发布2018-08-03 11:27:43
3370
发布2018-08-03 11:27:43
举报
文章被收录于专栏:Android机动车Android机动车

线性表:零个或多个数据元素的有限序列。

线性表的定义

线性表,从名字上可以感觉到,是具有像线一样的性质的表

官方定义: 线性表(List):零个或多个数据元素的有限序列

注意;

  • 首先它是一个序列。也就是说,元素之间是有序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继。
  • 线性表强调有限,元素个数是有限的。

其结构如下图:

线性表元素的个数n(n≥0)定义为线性表的长度,当n=0时,称为空表。在非空表中的每个元素都有一个确定的位置,如a1是第一个元素,an是最后一个元素,ai是第i各元素,i称为数据元素ai在线性表中的位序。

在较复杂的线性表中,一个元素可以由若干个数据项组成。

线性表的顺序存储结构

1、顺序存储定义

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

这里强调两点:

  1. 地址连续
  2. 与线性表顺序一致

如图:

2、顺序存储方式

通俗地讲,线性表的顺序存储结构,就是在内存中找块地儿,通过占位的形式,把一定的内存空间给占了,然后把相同数据类型的数据元素依次存放在这块空地。

可以用一个一维数组来实现顺序存储结构,即把第一个数据元素存到数组下标为0的位置,接着把线性表相邻的元素存储在数组中相邻的位置。

我们发现描述存储结构三个重要的属性:

  • 存储空间的起始位置;
  • 线性表的最大存储容量;
  • 线性表的当前长度。
3、数组长度与线性表长度区别
  • 数组长度:定义数组时,已经开辟了固定大小的空间,一般不变;
  • 线性表长度:线性表中数据元素的个数,随着插入和删除的操作,这个量是变化的。

所以:线性表长度≤数组长度

4、地址计算方法

线性表的第i各元素存储在数组下标为i-1的位置,如下图:

这个图也体现了数组长度和线性表长度的关系。用数组存储顺序表意味着要分配固定长度的数组空间,由于线性表中可以进行插入和删除操作,因此分配的数组长度空间应该大于等于当前线性表的长度。

存储器中的每个存储单元都有自己的编号,这个编号叫做地址。

顺序结构的插入删除

1、获得元素操作

对于线性表的顺序存储结构来说,我们要实现getElem操作,即将线性表L中的第i个元素值返回,直接将数组第i-1下标的的值返回即可。

如果已知第一个元素的地址,和每个元素所占内存大小,即可算出第i个元素的内存地址,时间复杂度为O(1)。

2、插入操作

插入算法思路:

  • 如果插入位置不合理,抛出异常;
  • 如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;
  • 从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;
  • 将要插入的元素填入位置i处;
  • 表长加1。
3、删除操作

删除算法思路:

  • 如果删除位置不合理,抛出异常;
  • 取出删除元素;
  • 从删除位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置;
  • 表长减1。
4、操作整理
  • 读取、存入数据: O(1)
  • 插入、删除数据: O(n)

总的来说,线性表的顺序存储结构:读取快,增删慢

5、优缺点

优点

  • 无须为表示表中元素之间的逻辑关系而增加额外的存储空间;
  • 可以快速地存取表中任意一个位置的元素;

缺点

  • 插入和删除操作需要移动大量的元素;(最大缺点)
  • 当线性表长度变化较大时,难以确定存储空间的容量;
  • 容易造成存储空间的“碎片”。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android机动车 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线性表的定义
  • 线性表的顺序存储结构
    • 1、顺序存储定义
      • 2、顺序存储方式
        • 3、数组长度与线性表长度区别
          • 4、地址计算方法
          • 顺序结构的插入删除
            • 1、获得元素操作
              • 2、插入操作
                • 3、删除操作
                  • 4、操作整理
                    • 5、优缺点
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档