数据结构——广义表

文章目录

  • 前言
  • 二、特殊矩阵的压缩存储
    • 数组的存储结构和实现
      • 按行优先存储
      • 按列优先存储
    • 矩阵的压缩存储
      • 稀疏矩阵
    • 广义表
  • 总结


前言

数组,数组的压缩存储,广义表


二、特殊矩阵的压缩存储

数组的存储结构和实现

对于多维数组,可以分为按行优先存储和按列优先存储,但都是按顺序存放在一个连续的空间中

按行优先存储

aij:aij前有n*(i-1)个元素
在第i行的aij前共有(j-1)个元素
LOC(aij)=LOC(a11)+[(i-1)n+(j-1)]*L

例:二维数组M的每个元素含4个字符,每个字符占用一个存储单元,行下标i从1变到5,列下标从1到6,那么按行存储是元素M[4][6]的起始地址为()

M[4][6]=LOC(a11)+(3*6+5)4= LOC(a11)+234

按列优先存储

Loc(aij)=Loc(a11)+[(j-1)*m+(i-1)]*L
例:一个二维数组中,每个元素占用3个存储单元,行标从1到8,列从1到10,则A[8][5]的起始地址应该是?

按行:A[8][5]=(7*10+4)3+Loc(a11)=743+Loc(a11)

按列:A[8][5]=(4*8+7)*3+Loc(a11)=Loc(a11)+117

`例:设数组a[1…60,1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为_______

按行:(31*70+57)*2+2048

按列:(57*60+31)*2+2048

矩阵的压缩存储

压缩存储:为多个值相同的元素只分配一个存储空间,对0不分配存储空间
特殊矩阵:具有许多相同元素或0元素,分布有一定规律的矩阵(对称矩阵、上下三角矩阵、对角矩阵)
对称矩阵: n阶方阵中,按主对角线对称,只存放主对角线和下三角元素(或上三角元素,又或按行或者按列存储)(共n(n+1)/2)
三角矩阵: 上或下三角矩阵,其另外一角都为同一常数,存储完对角线和下三角元素后,紧接着存储上三角元素一次(共n(n+1)/2+1)
三对角矩阵: 所有元素集中在三条主对角线上,其余均为0;(i,j)元素在数组中的下标为k=2i+j-3,反之,若元素在数组中第k个位置,则 i=(k+1)/3+1向下取整,j=k-2i+3i 取下限

稀疏矩阵

定义:非零元较零元少,且分布没有一定规律的矩阵
压缩存储原则:只存矩阵的行列维数和每个非零元的行列下标及其值
三元组:一个稀疏矩阵所有非零元素三元组的集合,再增加一个表示矩阵行数,列数和非零元个数的特殊三元组,就可以唯一地确定一个稀疏矩阵,把这些三元组的总体,称为该稀疏矩阵的“三元组表”

数据结构——广义表_第1张图片
数据结构——广义表_第2张图片

广义表

  1. 定义:是一种特殊的线性表,表中的数据元素,既可以是原子,也可以是子表
  2. 广义表的表长:广义表中数据元素的个数

例:
A=( ) 表长n=0
B= (a) 表长n=1
C=(a,(b,c,d)) 表长n=2
D=(A,B,C)=(( ),(a),(a(b,c,d))) 表长n=3

  1. 广义表的深度:广义表中括号的重数
  2. 广义表的头和尾
    A(e)
    表头:Head(A)=e
    表尾:Tail(A)=( )
  3. 广义表的表头:广义表中第一个数据元素,既可以是原子,也可以是子表
  4. 广义表的表尾:广义表中除了表头,剩下都是尾,必须是子表

``
数据结构——广义表_第3张图片


总结

  1. 数组
  2. 矩阵的压缩存储
  3. 广义表

你可能感兴趣的:(数据结构,数据结构,矩阵,线性代数)