zoukankan      html  css  js  c++  java
  • 数据结构(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,表头表尾均为空表。

  • 相关阅读:
    [转]一键安装藏隐患,phpStudy批量入侵的分析与溯源
    Vue Cli安装以及使用
    全局安装 Vue cli3 和 继续使用 Vue-cli2.x
    [转]局域网共享一键修复 18.5.8 https://zhuanlan.zhihu.com/p/24178142
    DELPHI中千万别直接使用CreateThread ,建议使用BeginThread(在C++中无大问题,可是到了DELPHI中情况就不一样了)
    [转]【Delphi】 Thread.Queue与Synchronize的区别
    如何使用Windows Library文件进行持久化
    chromium中的性能优化工具syzyProf
    [转]室友靠打游戏拿30万offer,秘密竟然是……
    .NET中的三种Timer的区别和用法
  • 原文地址:https://www.cnblogs.com/xqy1874/p/12793185.html
Copyright © 2011-2022 走看看