• 数据结构(C语言版)---数组、广义表和压缩存储


    1、数组:由n个相同类型的数据元素构成的有限序列。

    2、一维数组可视为一个线性表,二维数组可视为元素是线性表的线性表。

    3、一维数组的存储结构关系式

                 LOC(ai)=LOC(a0)+i*L;L是每个数组元素所占的存储单元。

         多维数组的存储有两种:按行优先和按列优先。

    4、压缩存储:为多个值相同的元素只分配一个存储空间,对零元素不分配存储空间。

    5、特殊矩阵:如对称矩阵、三角矩阵、对角矩阵(又称带状矩阵)。

    6、对称矩阵:一维数组存储,假设只存放主对角线和下三角区的元素。i为行,j为列。

         元素下标的关系:k=i(i-1)/2+j-1(i>=j,下三角区和主对角线元素);k=j(j-1)/2+i-1(i<j,上三角区元素);数组下标从0开始。

    7、三角矩阵:

    1)下三角矩阵

    a1,1(第一行) a2,1 a2,2(第二行) a3,1 a3,2 a3,3(第三行) ... an,1 an,2 ... an,n(第n行) c(常数项)

          元素与下标的关系:k=i(i-1)/2+j-1(i>=j,下三角区和主对角线元素);k=n(n+1)/2(i<j,上三角区元素)。

    2)上三角矩阵

    a1,1 a1,2 ... a1,n(第一行) a2,2 a2,3 ... a2,n(第二行) ... an,n(第n行) c(常数项)

          元素与下标的关系:k=(i-1)(2n-i+2)/2+j-i(i<=j,上三角区和主对角线元素);k=n(n+1)/2(i>j,下三角区元素)。

    8、三对角矩阵:所有非零元素都集中在以主对角线为中心的3条对角线区域,其他区域的元素为0。

    a1,1 a1,2 a2,1 a2,2 a2,3 ... an-1,n an,n-1 an,n

          元素与下标的关系:k=2i+j-3。

    9、稀疏矩阵:采用三元组存储元素。

    10、广义表,LS=(s1,a2,...,an),LS为广义表的名称,n为广义表的长度,ai为单个元素或广义表,分别称为原子和子表。

           LS非空时,a1为表头,其余元素组成的表称为表尾。

    例子:

          A=():A为空表,长度为0。

          B=(e):广义表B只有一个原子e,长度为1。

          C=(a,(b,c,d)):广义表C,两个元素分别为原子a,子表(b,c,d),长度为2。

          D=(A,B,C):广义表D,三个元素均是子表,长度为3。

          E=(a,E):广义表E,E为递归表,长度为2。

          F=(()):广义表F,长度为1,表头表尾均为空表。

  • 相关阅读:
    【255】◀▶IEW-Unit20
    【254】◀▶IEW-Unit19
    【253】◀▶IEW-Unit18
    【252】◀▶IEW-Unit17
    [LeetCode] Restore IP Address
    1030
    (Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
    新知识的遗忘数度真是可怕
    【自由谈】城域网IPv6过渡技术——4v6场景技术总结(1)
    Graph Databases—The NOSQL Phenomenon阅读笔记
  • 原文地址:https://www.cnblogs.com/xqy1874/p/12793185.html
Copyright © 2020-2023  润新知