数据结构 广义线性表

广义线性表---多维数组

线性表:相同类型的数据元素的有限序列

多维数组:线性表中数据元素可以是线性表,但所有元素的类型相同

数组特点:元素的推广性、同一性、确定性

基本操作:存取、修改(两者本质是寻址操作)

广义表:线性表的数据元素可以是线性表,元素的类型可以不相同

数组的存储结构与寻址

一维数组

任一元ai 的存储地址可由下式确定:Loc({a_{i}}^{}) = Loc(al)+(i-l)\times c

二维数组

存储方式:

优先先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。

优先先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。

按行优先存储的寻址  :aij前面的元素个数    =    阴影部分的面积

                                      =整行数×每行元素个数+本行中aij前面的元素个数

                                      =(i -l1)×(h2 -l2+1)+(j -l2)

多维数组

 矩阵的压缩存储

特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。

                  对称矩阵(x_{ij}=x_{ji}):

                                  下三角中的元素x_{ij}(i>=j),在数组中的下标k与i、j的关系为:k=i*(i+1)/2+j

                                   上三角中的元素x_{ji }(i<j),在数组中的下标k与i、j的关系为:k=j*(j+1)/2+i

                  三角矩阵:上三角矩阵:矩阵中任一元素aij数组中的下标kij的对应关系

                                    下三角矩阵:矩阵中任一元素aij数组中的下标kij的对应关系:

                  对角矩阵:所有非零元素都集中在以主对角线为中心的带状区域中,除了主对角线和                                        它的上下方若干条对角线的元素外,所有其他元素都为零

 

稀疏矩阵:矩阵中有很多零元素。          

     三元组(行号,列号,非零元素值):表示稀疏矩阵中的每个非零元素

     三元组表:稀疏矩阵的非零元素对应的三元组所构成的集合,按行优先顺序排列成一个线性表

     1、三元组顺序表:稀疏矩阵的压缩存储(要确定行列数才能对应唯一 稀疏矩阵)        

                             基本思想:1、直接取,顺序存

                                                2、顺序取,直接存

引入两个数组作为辅助数据结构:num[nu]:存储矩阵A中某列的非零元素的个数

                                                      cpot[nu]:初值表示矩阵A中某列的第一个非零元素在B中的位置

     2、十字链表:用链接存储结构存储三元组表,每个非零元素对应的三元组存为一个链表结点

          结构: 

row:   存储非零元素的行号          col:存储非零元素的列号             item:存储非零元素的值

right: 指针域,指向同一行中的下一个三元组        down:指针域,指向同一列中的下一个三元组

压缩存储的基本思想:⑴ 为多个值相同的元素只分配一个存储空间;

                                    ⑵ 元素不分配存储空间。

广义表线性表----广义表 

定义:

nn≥0)个数据元素的有限序列      记作: LS=(a1,a2,… ai …,an)

LS是广义表的名称,ai(1≤in)是LS的成员(或直接元素),可以是单个的数据元素,也可以是一个广义表,分别称为LS的单元素(或原子)和子表。

大写字母表示广义表,用小写字母表示单元素

逻辑结构:直接元素之间是线性关系

基本概念:

长度:广义表LS中的直接元素的个数

深度:广义表LS中括号的最大嵌套层数

表头:广义表LS非空时,称第一个元素LS的表头

表尾:广义表LS除表头外其余元素组成的广义表

存储:

广义表中的数据元素的类型不统一,难以采用顺序存储结构来存储

利用头尾表示法存储广义表:广义表结点——存储广义表、元素结点——存储单元素

结点结构:

基本运算:取表头运算、取表尾运算 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值