知识大全 数据结构第五章多维数组和广义表
Posted 知
篇首语:历览千载书,时时见遗烈。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构第五章多维数组和广义表相关的知识,希望对你有一定的参考价值。
第五章多维数组和广义表
多维数组
一般用顺序存储的方式表示数组 常用方式有 )行优先顺序 将数组元素按行向量排列; )列优先顺序 将数组元素按列向量排列
计算地址的函数 LOC(Aij)=LOC(Ac c )+((i c )*(d c + )+j c )*d
矩阵的压缩存储
为多个非零元素分配一个存储空间;对零元素不分配存储空间
对称矩阵
在一个n阶的方阵A中 元素满足Aij=Aji <=i j<=n ;称为对称矩阵
元素的总数为 n(n+ )/ ;
设 I=i或j中大的一个数;J=i或j中小的一个数;
则 k=I*(I+ )/ +J;
地址计算 LOC(Aij)=LOC(sa[k])=LOC(sa[ ])+k*d= LOC(sa[ ])+ (I*(I+ )/ +J )*d
三角矩阵
以主对角线划分 三角矩阵有上三角和下三角;上三角的主对角线下元素均为常数c;下三角的主对角线上元素均为常数c
元素总数为 (n(n+ )/ )+ ;
以行优先顺序存放的Aij与SA[k]的关系
上三角阵 k=i*( n i+ )/ +j i;
下三角阵 k=i*(i+ )/ +j;
对角矩阵
所有的非零元素集中在以主对角线为中心的带状区域 相邻两侧元素均为零 |i j|>(k )/
以行优先顺序存放的Aij与SA[k]的关系 k= i+j;
稀疏矩阵
当矩阵A中有非零元素S个 且S远小于元素总数时 称为稀疏矩阵 对其压缩的方法有顺序存储和链式存储
三元组表
将表示稀疏矩阵的非零元素的三元组(行号 列号 值)按行或列优先的顺序排列得到的一个结点均是三元组的线性表 将该表的线性存储结构称为三元组表 其类型定义
#define maxsize
typedef int datatype;
typedef struct
int i j;
datatype v;
trituplenode;
typedef struct
trituplenode data[maxsize];
int m n t;
tritupletable;
带行表的三元组表
在按行优先存储的三元组表中加入一个行表记录每行的非零元素在三元组表中的起始位置 类型定义
#define maxrow
typedef struct
tritulpenode data[maxsize];
int rowtab[maxrow];
int m n t;
rtritulpetable;
广义表的概念
广义表是线性表的推广 广义表是n个元素的有限序列 元素可以是原子或一个广义表 记为LS
若元素是广义表称它为LS的子表 若广义表非空 则第一个元素称表头 其余元素称表尾
表的深度是指表展开后所含括号的层数
把与树对应的广义表称为纯表 它限制了表中成分的共享和递归;
允许结点共享的表称为再入表;
允许递归的表称为递归表;
相互关系 线性表∈纯表∈再入表∈递归表;
广义表的特殊运算 )取表头head(LS); )取表尾tail(LS);
附二:
第五章多维数组和广义表
**************************************************************************************
数组一般用顺序存储的方式表示 存储的方式有 ·行优先顺序 也就是把数组逐行依次排列 PASCAL C
·列优先顺序 就是把数组逐列依次排列 FORTRAN
**************************************************************************************
地址的计算方法 ·按行优先顺序排列的数组 LOCa(ij)=LOCa( )+((i )*n+(j ))*d
·按列优先顺序排列的数组 LOCa(ij)=LOCa( )+((j )*n+(i ))*d
**************************************************************************************
矩阵的压缩存储 为多个相同的非零元素分配一个存储空间;对零元素不分配空间
特殊矩阵的概念 所谓特殊矩阵是指非零元素或零元素分布有一定规律的矩阵
稀疏矩阵的概念 一个矩阵中若其非零元素的个数远远小于零元素的个数 则该矩阵称为稀疏矩阵
*************************************************************************************
特殊矩阵的类型 ·对称矩阵 满足a(ij)=a(ji) 元素总数n(n+ )/ I=max(i j) J=min(i j) LOCa(ij)=LOC(sa[ ])+(I*(I+ )/ +J)*d
·三角矩阵 ·上三角阵 k=i*( n i+ )/ +j i LOCa(ij)=LOC(sa[ ])+k*d
·下三角阵 k=i*(i+ )/ +j LOCa(ij)=LOC(sa[ ])+k*d
·对角矩阵 k= i+j LOCa(ij)=LOC(sa[ ])+k*d
*************************************************************************************
稀疏矩阵的压缩存储方式用三元组表把非零元素的值和它所在的行号列号做为一个结点存放在一起 用这些结点组成的一个线性表来表示 但这种压缩存储方式将失去随机存储功能 加入行表记录每行的非零元素在三元组表中的起始位置 即带行表的三元组表
************************************************************************
广义表是n(n≥ )个元素的有限序列 其中的元素是原子或者是一个广义表
广义表表头和表尾的概念 ·若广义表LS非空(n≥ ) 则这个广义表的第一个元素就是表头
·其余的元素组成的表称为LS的表尾 所以表尾必是一个子表
广义表有两种表示法 一种是括号表示法 一种是图形表示法
广义表与树(形结构)相对应 这个广义表就是纯表
如果一个广义表的结点又可以被其他结点所共享 则这个表称为再入表
允许递归的表称为递归表
线性表∈纯表(树)∈再入表∈递归表 可见 广义表是对线性表和树的推广
广义表有两个特殊的基本运算 ·取表头head(LS) 取表中的第一个数据元素 不能对空表操作
cha138/Article/program/sjjg/201311/23669相关参考
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[34]
数组广义表与线性表之间有什么样的关系?【西北工业大学一(分)】 什么是广义表?请简述广义表和线性表的主要区别【北京大学二(分)】 求下列广义表的运算结果【南京航空航天大学 三(分)】
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[45]
广义表GL=(aa…an)其中ak(k=n)或是单个数据元素(原子)或仍然是个广义表给定如下有关广义表的类型定义 TYPEtagtype=; glist=^gnode; gnode=RECO
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[1]
第五章 数组和广义表 一选择题 设有一个阶的对称矩阵A采用压缩存储方式以行序为主存储a为第一元素其存储地址为每个元素占一个地址空间则a的地址为( )
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[8]
下面说法不正确的是( )【南京理工大学一(分)】 A广义表的表头总是一个广义表 B广义表的
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[13]
当广义表中的每个元素都是原子时广义表便成了_______【长沙铁道学院二(分)】 广义表的表尾是指除第一个元素之外_______【中山大学 一(分)】 广义表简称表是由零个或多个原子
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[35]
利用广义表的Head和Tail运算把原子d分别从下列广义表中分离出来L=(((((a)b)d)e))L=(a(b((d))e))【北方交通大学一(分)】 类似本题的另外叙述有 ()已知广义表L
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[9]
广义表的取表尾运算其结果通常是个表但有时也可是个单元素值( )【南京航空航天大学六(分)】 若一个广义表的表头为空表则此广义表亦为空表(
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[36]
画出下列广义表的两种存储结构图(()A(B(CD))(EF))【南京航空航天大学三(分)】 假设采用以下两种结点的链表作为广义表的存贮结构表结点(tag=hptp) 元素结点(tag=
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[14]
广义表A=(((ab)(cde)))取出A中的原子e的操作是:_______【合肥工业大学三(分)】 设某广义表H=(A(abc))运用head函数和tail函数求出广义表H中某元素b的运算式_
知识大全 数据结构考研分类复习真题 第五章 数组和广义表[38]
写出对广义表A=(x((ab)cd))作运算head(head(tail(A)))后的结果【西安电子科技大学计应用一(分)】 .写出广义表的运算结果: TAIL[HEAD[TAIL[(