数据结构7-数组、广义表

数组

  • 数组:按一定格式排列起来的具有相同类型的数据元素的集合。
  • 一维数组:若线性表中的数据元素为非结构的简单元素则称为一维数组。
  • 一维数组的逻辑结构:线性结构。定长的线性表。
  • 声明格式: 数据类型 变量名称[长度];

  • 二维数组:若一维数组中的数据元素又是一维数组结构,则称为二维数组。
  • 二维数组的逻辑结构
    • 线性结构:该线性表的每个数据元素也是一定长的线性表.(定长的线性表)。
    • 非线性结构:每一个数据元素既在一个行表中,又在一个列表中。
  • 声明格式:数据类型 变量名称[行数][列数];

  • n维数组:若n-1维数组中的元素又是一个一维数组结构,
    则称作n维数组。

线性表结构是数组结构的一个特例,
而数组结构又是线性表结构的扩展。

  • 数组特点:结构固定-----定义后,维数和维界不再改变。
  • 数组基本操作:除了结构的初始化和销毁之外,
    只有取元素和修改元素值的操作。
    在这里插入图片描述
    在这里插入图片描述

矩阵压缩

  • 矩阵:一个由mxn个元素排成的m行n列的表。

  • 矩阵的常规存储:
    将矩阵描述为一个二维数组。

  • 矩阵的常规存储的特点:
    可以对其元素进行随机存取;
    矩阵运算非常简单;存储的密度为1。

  • 不适宜常规存储的矩阵:值相同的元素很多且呈某种规律分布;零元素多

  • 矩阵的压缩存储:为多个相同的非零元素只分配一个存储空间;对零元
    素不分配空间。

  • 什么矩阵能够压缩?
    一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。

  • 稀疏矩阵
    矩阵中非零元素的个数较少(一般小于5%)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 三元组顺序表又称有序的双下标法。
  • 三元组顺序表的优点:非零元在表中按行序有序存储,因此便于进
    行依行顺序处理的矩阵运算。
  • 三元组顺序表的缺点:不能随机存取。若按行号存取某一行中的非
    零元,则需从头开始进行查找。

在这里插入图片描述

广义表

广义表(又称列表Lists)是n≥0个元素ao,a1,…an-1的有限序列,其中每一个a;或者是原子,或者是一个广义表。
在这里插入图片描述
广义表的性质:

  • 广义表中的数据元素有相对次序;一个直接前驱和一个直接后继

  • 广义表的长度定义为最外层所包含元素的个数;
    如:C=(a,(b,c))是长度为2的广义表。

  • 广义表的深度定义为该广义表展开后所含括号的重数;
    A=(b,c)的深度为1,B=(A,d)的深度为2,C=(f,B,h)的深度为3。
    注意:“原子”的深度为0;“空表”的深度为1。

  • 广义表可以为其他广义表共享;如:广义表B就共享表A。
    在B中不必列出A的值,而是通过名称来引用,B=(A)。

  • 广义表可以是一个递归的表。如:F=(a,(F)=(a,(a,(a))))
    注意:递归表的深度是无穷值,长度是有限值。

  • 广义表是多层次结构,广义表的元素可以是单元素,也可以
    是子表,而子表的元素还可以是子表,…
    在这里插入图片描述

  • 广义表与线性表的区别?
    广义表可以看成是线性表的推广,线性表是广义表的特例。
    广义表的结构相当灵活,在某种前提下,它可以兼容线性表、数组、
    树和有向图等各种常用的数据结构。
    当二维数组的每行(或每列)作为子表处理时,二维数组即为一个广
    义表。
    另外,树和有向图也可以用广义表来表示。
    由于广义表不仅集中了线性表、数组、树和有向图等常见数据结构的
    特点,而且可有效地利用存储空间,因此在计算机的许多应用领域都有成功使用广义表的实例。

  • 广义表的基本运算
    (1)求表头GetHead(L):非空广义表的第一个元素,可以是一个广义表也可以是一个子表
    (2)求表尾GetTail(L):非空广义表除去表头元素以外其它元素所构成的表。表尾一定是一个表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值