码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-04-28 13:13:44      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:多个   矩阵   压缩   height   nbsp   idt   sub   --   分配   

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,表头表尾均为空表。

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

标签:多个   矩阵   压缩   height   nbsp   idt   sub   --   分配   

原文地址:https://www.cnblogs.com/xqy1874/p/12793185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!