5.数据结构 --- 数组和广义表

1.数组的定义
	和线性表一样,所有的数据元素都必须属于同一数据类型。当n=1,n维数组就退化为定长的线性表。数组一旦被定义,它的维度
  和维届就不再改变。

2.矩阵的压缩存储
	矩阵中有许多值相同的元素或者是零元素。有时为了节省存储空间,对这类矩阵进行压缩存储。所谓的压缩存储是指:为多个值相同的元
  只分配一个存储空间;对零元不分配存储空间。
  	假设值相同的元素或者是零元素在矩阵中的分布有一定的规律,则我们称此类矩阵为特殊矩阵;反之称为稀疏矩阵。

  1.特殊矩阵
  	若n阶矩阵A中的元满足下述性质:
  		Aij = Aji 1<=i,j<=n
  	则称为n阶对称矩阵。
  	对于对称矩阵,我们可以为每一个对称元分配一个存储空间,则可以将n^2个元压缩到n(n+1)/2个元的空间中。

  	假设以一维数组sa[n(n+1)/2]作为n阶对称矩阵A的存储结构,则sa[k]和矩阵元素aij之间存在一一对应的关系:
  	k = i(i-1)/2 + j - 1 // 当i>=j
  或k = j(j-1)/2 +i - 1 //当i<j
  	对于任意给定一组下标(i,j),均可在sa中找到矩阵元aij,反之,对所有的k=0,1,2,3...,n(n+1)/2-1,都能确定sa[k]中的元在矩阵中的位置(i,j),
  由此,称sa[n(n+1)/2] 为n对称矩阵A的压缩存储。

  	所谓的下(上)三角矩阵是指矩阵的上(下)三角(不包括对角线)中的元均为常数c或者零的n阶矩阵。则除了和对称矩阵一样,只存储其下(上)三角中的元之外,
  再加上一个存储常数c的存储空间即可。

  	对角矩阵:在这种矩阵中,所有的非零元都几种在以对角线为中心的带状区域中。即除了主对角线上和直接在对角线上,下方若干条对角线上的元之外,其他
  所有的元皆为零。

  	在所有这些我们称之为特殊矩阵的矩阵中,非零元的分布都有一个明显的规律,从而使得我们可以将其压缩到一维数组中,并找到每个非零元在一维数组中的
  对应关系。
  	然而,在实际应用中我们还经常遇到另一类矩阵,其非零元较零元少,且分布没有一定的规律,我们称之为稀疏矩阵。

  2.稀疏矩阵
  	假设在 m*n 的矩阵中,有t个元素不为零。另 x = t/(m*n),称x为矩阵的稀疏因子,通常认为 x<=0.05 时称为稀疏矩阵。

  	如何进行稀疏矩阵的压缩存储呢?
  		按照压缩存储的概念,只存储稀疏矩阵的非零元。因此,除了存储非零元的值之外,还必须同时记下它所在的行和列的位置(i,j)。反之,在一个三元组(i,j,aij)
  	  唯一确定了矩阵A的一个非零元。由此,稀疏矩阵可由表示非零元的三元组及其行列数唯一确定。

  	1.三元组顺序表
  		假设以顺序存储结构来表示三元组表,则可得稀疏矩阵的一种压缩存储方式---我们称之为三元组顺序表。
  		三元组顺序表又称为有序的双下标法,它的特点是,非零元在表中按行序有序存储,因此便于进行一次顺序处理的矩阵运算。

  	2.行逻辑链接的顺序表
  		为了便于随机存取任意一行的非零元,则需知道每一行的第一个非零元在三元组表中的位置。为此,可将上节快速转置矩阵中的算中创建的,指示'行'信息的辅助数组cpot
  	  固定在稀疏矩阵的存储结构中。称这种'带行链接信息'的三元组表为行逻辑链接的顺序表。

  	3.十字链表

3.广义表的定义
	广义表是线性表的推广。广义表一般记作:  LS = (a1,a2,...,an)
	其中,LS 是广义表的名称,n是它的长度。在线性表的定义中,ai只限于是单个元素。而在广义表中,ai可以是单个元素,也可以是广义表,分别称为广义表LS的原子和子表。

4.m元多项式的表示
	一元多项式用线性表表示,m元多项式用广义表表示。

5.广义表的递归算法
	递归定义的基本项描述了一个或几个递归的过程的终结状态。递归的过程,必定能够经过有限层次的递归而终止。所谓的终结状态指的是不需要继续递归而可直接求解的状态。
	递归定义的归纳项描述了如何实现从当前状态到终结状态的转换。
	递归设计的实质是:当一个复杂的问题可以分解为若干子问题来处理时,其中某些子问题与原问题有相同的特征属性,则可利用和原问题相同的分析处理方法;反之,这些子问题
  解决了,原问题也迎刃而解了。递归的归纳项就是描述这种原问题和子问题之间的转换关系。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值